CloudFront 요청 헤더 추가 - Amazon CloudFront

CloudFront 요청 헤더 추가

CloudFront가 최종 사용자의 요청에서 원본 또는 엣지 기능으로 특정 HTTP 헤더를 추가하도록 CloudFront를 구성할 수 있습니다. 이러한 HTTP 헤더의 값은 최종 사용자 또는 최종 사용자 요청의 특성을 기반으로 합니다. 헤더는 최종 사용자의 디바이스 유형, IP 주소, 지리적 위치, 요청 프로토콜(HTTP 또는 HTTPS), HTTP 버전 및 TLS 연결 세부 정보, JA3 핑거프린트 및 JA4 핑거프린트를 제공할 수 있습니다.

이러한 헤더를 사용하면 정보를 확인하기 위해 직접 코드를 작성할 필요 없이 오리진 또는 엣지 함수에서 최종 사용자에 대한 정보를 수신할 수 있습니다. 오리진에서 이러한 헤더 정보를 기반으로 서로 다른 응답을 반환하는 경우, 캐시 키에 해당 응답을 포함시켜 CloudFront에서 별도로 캐시할 수 있습니다. 예를 들어, 오리진에서는 최종 사용자가 거주하는 국가에 따라 특정 언어로 된 콘텐츠나 특정 디바이스 유형에 맞춘 콘텐츠로 응답할 수 있습니다. 오리진에서 로그 파일에 이러한 헤더를 쓸 수도 있습니다. 이 헤더를 사용하여 최종 사용자의 위치, 사용 중인 디바이스 유형 등에 대한 정보를 확인할 수 있습니다.

캐시 키에 헤더를 포함하려면 캐시 정책을 사용합니다. 자세한 내용은 정책으로 캐시 키 제어캐시 키 이해 섹션을 참조하세요.

원본에서 이러한 헤더를 수신하지만 캐시 키에는 포함하지 않으려면 원본 요청 정책을 사용하십시오. 자세한 내용은 정책을 통한 오리진 요청 제어 단원을 참조하십시오.

최종 사용자의 디바이스 유형을 확인하기 위한 헤더

다음 헤더를 추가하여 최종 사용자의 디바이스 유형을 확인할 수 있습니다. User-Agent 헤더 값에 따라 CloudFront에서는 해당 헤더 값을 true 또는 false로 설정합니다. 디바이스가 둘 이상의 범주에 속하는 경우 둘 이상의 값이 true일 수 있습니다. 예를 들어 일부 태블릿 디바이스의 경우 CloudFront에서는 CloudFront-Is-Mobile-ViewerCloudFront-Is-Tablet-Viewer를 모두 true로 설정합니다.

  • CloudFront-Is-Android-Viewer – CloudFront에서 최종 사용자가 Android 운영 체제를 사용하는 디바이스라고 확인되면 true로 설정합니다.

  • CloudFront-Is-Desktop-Viewer – CloudFront에서 최종 사용자가 데스크톱 디바이스라고 확인되면 true로 설정합니다.

  • CloudFront-Is-IOS-Viewer – CloudFront에서 최종 사용자가 iPhone, iPod touch, iPad 디바이스와 같은 Apple 모바일 운영 체제를 사용하는 디바이스라고 확인되면 true로 설정합니다.

  • CloudFront-Is-Mobile-Viewer – CloudFront에서 최종 사용자가 모바일 디바이스라고 확인되면 true로 설정합니다.

  • CloudFront-Is-SmartTV-Viewer – CloudFront에서 최종 사용자가 스마트 TV라고 확인되면 true로 설정합니다.

  • CloudFront-Is-Tablet-Viewer – CloudFront에서 최종 사용자가 태블릿이라고 확인되면 true로 설정합니다.

최종 사용자 위치를 확인하기 위한 헤더

다음 헤더를 추가하여 최종 사용자의 위치를 확인합니다. CloudFront는 최종 사용자의 IP 주소에 따라 이러한 헤더의 값을 확인합니다. 이 헤더 값에 ASCII 문자가 아닌 문자가 있는 경우, CloudFront는 RFC 3986의 섹션 1.2에 따라 문자를 퍼센트 인코딩합니다.

  • CloudFront-Viewer-Address - 최종 사용자의 IP 주소와 요청의 소스 포트를 포함합니다. 예를 들어, 헤더 값 198.51.100.10:46532는 최종 사용자의 IP 주소가 198.51.100.10이고 요청 소스 포트가 46532임을 의미합니다.

  • CloudFront-Viewer-ASN - 최종 사용자의 Autonomous System Number(ASN)를 포함합니다.

    참고

    CloudFront-Viewer-AddressCloudFront-Viewer-ASN을 오리진 요청 정책에는 추가할 수 있지만 캐시 정책에는 추가할 수 없습니다.

  • CloudFront-Viewer-Country – 최종 사용자 국가의 두 자로 된 국가 코드가 들어 있습니다. 국가 코드 목록은 ISO 3166-1 alpha-2 단원을 참조하세요.

  • CloudFront-Viewer-City – 최종 사용자의 도시 이름을 포함합니다.

다음 헤더를 추가하면 CloudFront는 AWS 네트워크에서 시작된 요청을 제외한 모든 요청에 해당 헤더를 적용합니다.

  • CloudFront-Viewer-Country-Name – 최종 사용자 국가의 이름을 포함합니다.

  • CloudFront-Viewer-Country-Region – 최종 사용자 리전을 나타내는 코드(최대 3자)를 포함합니다. 리전은 ISO 3166-2코드의 첫 번째 수준의 하위 항목(가장 폭넓거나 가장 덜 구체적)입니다.

  • CloudFront-Viewer-Country-Region-Name – 최종 사용자 리전의 이름을 포함합니다. 리전은 ISO 3166-2코드의 첫 번째 수준의 하위 항목(가장 폭넓거나 가장 덜 구체적)입니다.

  • CloudFront-Viewer-Latitude – 최종 사용자의 대략적인 위도를 포함합니다.

  • CloudFront-Viewer-Longitude – 최종 사용자의 대략적인 경도를 포함합니다.

  • CloudFront-Viewer-Metro-Code – 최종 사용자의 메트로 코드를 포함합니다. 이는 최종 사용자가 미국에 있을 때만 표시됩니다.

  • CloudFront-Viewer-Postal-Code – 최종 사용자의 우편 번호를 포함합니다.

  • CloudFront-Viewer-Time-Zone IANA 표준 시간대 데이터베이스 형식(예: America/Los_Angeles)으로 최종 사용자의 표준 시간대를 포함합니다.

참고

CloudFront-Viewer-City, CloudFront-Viewer-Metro-CodeCloudFront-Viewer-Postal-Code를 모든 IP 주소에 사용할 수 있는 것은 아닙니다. 일부 IP 주소는 해당 정보를 얻을 수 있을 만큼 구체적으로 지리적 위치를 파악할 수 없습니다.

최종 사용자의 헤더 구조를 결정하기 위한 헤더

다음 헤더를 추가하여 전송한 헤더를 기반으로 최종 사용자를 식별할 수 있습니다. 예를 들어, 다양한 브라우저가 특정 순서로 HTTP 헤더를 전송할 수 있습니다. User-Agent 헤더에 지정된 브라우저가 해당 브라우저의 예상 헤더 순서와 일치하지 않는 경우 요청을 거부할 수 있습니다. 또한 CloudFront-Viewer-Header-Count 값이 CloudFront-Viewer-Header-Order의 헤더 수와 일치하지 않는 경우 요청을 거부할 수 있습니다.

  • CloudFront-Viewer-Header-Order — 최종 사용자의 헤더 이름을 요청된 순서대로 콜론으로 구분하여 포함합니다. 예: CloudFront-Viewer-Header-Order: Host:User-Agent:Accept:Accept-Encoding. 7,680자 제한을 초과하는 헤더는 잘립니다.

  • CloudFront-Viewer-Header-Count — 최종 사용자 헤더의 총 수를 포함합니다.

기타 CloudFront 헤더

다음 헤더를 추가하여 뷰어의 원본 요청 URI, 원본 요청 쿼리 문자열 파라미터와 값, 프로토콜, 버전, JA3 지문 및 TLS 연결 세부 정보를 확인할 수 있습니다.

  • CloudFront-Error-Args - 뷰어로부터 받은 원본 요청 URI를 포함합니다.

  • CloudFront-Error-Uri - 원본 요청 쿼리 문자열 파라미터 및 값을 포함합니다.

  • CloudFront-Forwarded-Proto – 최종 사용자의 요청 프로토콜(HTTP 또는 HTTPS)을 포함합니다.

  • CloudFront-Viewer-Http-Version – 최종 사용자 요청의 HTTP 버전을 포함합니다.

  • CloudFront-Viewer-JA3-Fingerprint — 최종 사용자의 JA3 지문을 포함합니다. JA3 지문은 해당 요청이 알려진 클라이언트에서 온 것인지, 맬웨어인지 악성 봇인지 또는 예상되는(허용 목록에 있는) 응용 프로그램에서 온 것인지 판단하는 데 도움이 됩니다. 이 헤더는 최종 사용자의 SSL/TLS Client Hello 패킷을 사용하며 HTTPS 요청에만 존재합니다.

    참고

    CloudFront-Viewer-JA3-Fingerprint원본 요청 정책에는 추가할 수 있지만 캐시 정책에는 추가할 수 없습니다.

  • CloudFront-Viewer-TLS - 최종 사용자와 CloudFront 간의 연결에 사용된 SSL/TLS 버전, 암호, SSL/TLS 핸드셰이크 정보를 포함합니다. 헤더 값은 다음 형식입니다.

    SSL/TLS_version:cipher:handshake_information

    handshake_information에 대해 헤더는 다음 값 중 하나를 포함할 수 있습니다.

    • fullHandshake - SSL/TLS 세션에 대해 전체 핸드셰이크가 수행되었습니다.

    • sessionResumed - 이전 SSL/TLS 세션이 재개되었습니다.

    • connectionReused - 이전 SSL/TLS 연결이 재사용되었습니다.

    다음은 이 헤더에 대한 몇 가지 예시 값입니다.

    TLSv1.3:TLS_AES_128_GCM_SHA256:sessionResumed
    TLSv1.2:ECDHE-ECDSA-AES128-GCM-SHA256:connectionReused
    TLSv1.1:ECDHE-RSA-AES128-SHA256:fullHandshake
    TLSv1:ECDHE-RSA-AES256-SHA:fullHandshake

    이 헤더 값에 있을 수 있는 SSL/TLS 버전 및 암호의 전체 목록은 최종 사용자와 CloudFront 간에 지원되는 프로토콜 및 암호 단원을 참조하세요.

    참고

    CloudFront-Viewer-TLS원본 요청 정책에는 추가할 수 있지만 캐시 정책에는 추가할 수 없습니다.