Hinzufügen von CloudFront-Anforderungsheadern - Amazon CloudFront

Hinzufügen von CloudFront-Anforderungsheadern

Sie können CloudFront so konfigurieren, dass den Anforderungen, die CloudFront von Viewern erhält und an Ihren Ursprung oder Ihre Edge-Funktion weiterleitet, bestimmte HTTP-Header hinzugefügt werden. Die Werte dieser HTTP-Header basieren auf den Eigenschaften des Viewers oder der Viewer-Anforderung. Die Header stellen Informationen über den Gerätetyp, die IP-Adresse, den geografischen Standort, das Anforderungsprotokoll (HTTP oder HTTPS), die HTTP-Version, die TLS-Verbindungsdetails, den JA3-Fingerprint und den JA4-Fingerprint des Viewers bereit. Sie können das Cacheverhalten Ihrer Distribution auch so konfigurieren, dass WebSocket-Header weitergeleitet werden. Weitere Informationen finden Sie unter Verwenden von WebSockets mit CloudFront-Distributionen.

Mit diesen Headern kann Ihr Ursprung oder Ihre Edge-Funktion Informationen über den Viewer abrufen, sodass Sie keinen eigenen Code schreiben müssen, um diese Informationen zu ermitteln. Wenn der Ursprung basierend auf den Informationen in diesen Headern unterschiedliche Antworten zurückgibt, können Sie diese in den Cache-Schlüssel einfügen, damit CloudFront die Antworten getrennt zwischenspeichert. Beispielsweise könnte der Ursprung basierend auf dem Land, in dem sich der Viewer befindet, mit Inhalten in einer spezifischen Sprache antworten oder er könnte mit Inhalten antworten, die auf einen spezifischen Gerätetyp zugeschnitten sind. Der Ursprung könnte diese Header auch in Protokolldateien schreiben, mit denen Sie Informationen über die Standorte und Gerätetypen der Viewer und vieles mehr ermitteln können.

Um diese Header in den Cache-Schlüssel einzufügen, verwenden Sie eine Cache-Richtlinie. Weitere Informationen finden Sie unter Steuern des Cache-Schlüssels mit einer Richtlinie und Grundlegendes zum Cache-Schlüssel.

Wenn Sie Header am Ursprung empfangen, diese aber nicht in den Cache-Schlüssel einschließen möchten, verwenden Sie eine Ursprungsanforderungsrichtlinie. Weitere Informationen finden Sie unter Steuern von Ursprungsanforderungen anhand einer Richtlinie.

Gerätetyp-Header

Mit den folgenden Headern können Sie den Gerätetyp des Viewers ermitteln. Basierend auf dem Wert des Headers User-Agent legt CloudFront den Wert dieser Header auf true oder false fest. Wenn ein Gerät in mehr als eine Kategorie fällt, können mehrere Werte sein true. Beispielsweise setzt CloudFront bei einigen Tablet-Geräten CloudFront-Is-Mobile-Viewer und CloudFront-Is-Tablet-Viewer auf true.

  • CloudFront-Is-Android-Viewer – Wird auf true festgelegt, wenn CloudFront feststellt, dass es sich bei dem Viewer um ein Gerät mit Android-Betriebssystem handelt.

  • CloudFront-Is-Desktop-Viewer – Wird auf true festgelegt, wenn CloudFront feststellt, dass es sich bei dem Viewer um ein Desktopgerät handelt.

  • CloudFront-Is-IOS-Viewer – Wird auf true festgelegt, wenn CloudFront feststellt, dass es sich bei dem Viewer um ein Gerät mit einem Apple-Betriebssystem, wie ein iPhone, einen iPod touch und andere iPad-Geräte, handelt.

  • CloudFront-Is-Mobile-Viewer – Wird auf true festgelegt, wenn CloudFront feststellt, dass es sich bei dem Viewer um ein Mobilgerät handelt.

  • CloudFront-Is-SmartTV-Viewer – Wird auf true festgelegt, wenn CloudFront feststellt, dass es sich bei dem Viewer um ein Smart-TV-Gerät handelt.

  • CloudFront-Is-Tablet-Viewer – Wird auf true festgelegt, wenn CloudFront feststellt, dass es sich bei dem Viewer um ein Tablet handelt.

Viewer-Standort-Header

Mit den folgenden Headern können Sie den Standort des Viewers ermitteln. CloudFront bestimmt die Werte für diese Header basierend auf der IP-Adresse des Viewers. Andere Zeichen als ASCII-Zeichen in den Werten dieser Header kodiert CloudFront mit Prozentzeichen gemäß Abschnitt 1.2 von RFC 3986.

  • CloudFront-Viewer-Address – Enthält die IP-Adresse des Viewers und den Quell-Port der Anforderung. Der Header-Wert 198.51.100.10:46532 bedeutet beispielsweise, dass die IP-Adresse des Viewers 198.51.100.10 lautet und der Quell-Port der Anforderung 46532 ist.

  • CloudFront-Viewer-ASN – Enthält die autonome Systemnummer (ASN) des Viewers.

    Anmerkung

    CloudFront-Viewer-Address und CloudFront-Viewer-ASN können in einer Ursprungsanforderungsrichtlinie, aber nicht in einer Cache-Richtlinie hinzugefügt werden.

  • CloudFront-Viewer-Country – Enthält den zweistelligen Ländercode für das Land des Viewers. Die Liste der Ländercodes finden Sie unter ISO 3166-1 alpha-2.

  • CloudFront-Viewer-City – Enthält den Namen der Stadt des Viewers.

Wenn Sie die folgenden Header hinzufügen, wendet CloudFront sie auf alle Anforderungen an, mit Ausnahme derjenigen, die ihren Ursprung im AWS-Netzwerk haben:

  • CloudFront-Viewer-Country-Name – Enthält den Namen des Landes des Viewers.

  • CloudFront-Viewer-Country-Region – Enthält einen Code (bis zu drei Zeichen), der die Region des Viewers darstellt. Die Region ist die Unterteilung der ersten Ebene (die breiteste oder am wenigsten spezifische) des Codes ISO 3166-2.

  • CloudFront-Viewer-Country-Region-Name – Enthält den Namen der Region des Viewers. Die Region ist die Unterteilung der ersten Ebene (die breiteste oder am wenigsten spezifische) des Codes ISO 3166-2.

  • CloudFront-Viewer-Latitude – Enthält den ungefähren Breitengrad des Viewers.

  • CloudFront-Viewer-Longitude – Enthält den ungefähren Längengrad des Viewers.

  • CloudFront-Viewer-Metro-Code – Enthält den Metro-Code des Viewers. Dieser wird nur verwendet, wenn sich der Viewer in den Vereinigten Staaten befindet.

  • CloudFront-Viewer-Postal-Code – Enthält die Postleitzahl des Viewers.

  • CloudFront-Viewer-Time-Zone Enthält die Zeitzone des Viewers im IANA-Zeitzonen-Datenbankformat (z. B. America/Los_Angeles).

Anmerkung

CloudFront-Viewer-City, CloudFront-Viewer-Metro-Code und CloudFront-Viewer-Postal-Code sind möglicherweise nicht für jede IP-Adresse verfügbar. Einige IP-Adressen können nicht mit ausreichender Genauigkeit geolokalisiert werden, um diese Informationen zu erhalten.

Header zur Bestimmung der Header-Struktur des Viewers

Sie können jetzt die folgenden Header hinzufügen, um den Viewer leichter anhand der gesendeten Header identifizieren zu können. So können beispielsweise verschiedene Browser HTTP-Header in einer bestimmten Reihenfolge senden. Wenn der im User-Agent-Header angegebene Browser nicht mit der erwarteten Header-Reihenfolge dieses Browsers übereinstimmt, können Sie die Anforderung ablehnen. Auch wenn der CloudFront-Viewer-Header-Count-Wert nicht mit der Anzahl der Header in CloudFront-Viewer-Header-Order übereinstimmt, können Sie die Anforderung ablehnen.

  • CloudFront-Viewer-Header-Order – Enthält die Header-Namen des Viewers in der angeforderten Reihenfolge, getrennt durch einen Doppelpunkt. Beispiel: CloudFront-Viewer-Header-Order: Host:User-Agent:Accept:Accept-Encoding. Header, die das Zeichenlimit von 7 680 überschreiten, werden abgeschnitten.

  • CloudFront-Viewer-Header-Count – Enthält die Gesamtzahl der Header des Viewers.

Sie können die folgenden Header hinzufügen, um den JA3-Fingerprint, den JA4-Fingerprint und die TLS-Verbindungsdetails des Viewers zu ermitteln:

  • CloudFront-Viewer-JA3-Fingerprint – Enthält den JA3-Fingerabdruck des Viewers. Anhand des JA3-Fingerabdrucks können Sie feststellen, ob die Anforderung von einem bekannten Client stammt, ob es sich um Malware oder einen bösartigen Bot oder um eine erwartete (in der Zulassungsliste aufgeführte) Anwendung handelt.

  • CloudFront-Viewer-JA4-Fingerprint – Enthält den JA4-Fingerabdruck des Viewers. Ähnlich wie beim JA3-Fingerprint können Sie anhand des JA4-Fingerprints feststellen, ob die Anforderung von einem bekannten Client stammt, ob es sich um Malware oder einen bösartigen Bot oder um eine erwartete (in der Zulassungsliste aufgeführte) Anwendung handelt. Sie können den Fingerprint verwenden, um eine Datenbank mit bekannten guten und schlechten Akteuren zu erstellen, die Sie bei der Überprüfung von HTTP-Anforderungen verwenden können. Anschließend können Sie den Header-Wert auf Ihren Anwendungs-Webservern oder in Lambda@Edge und CloudFront Functions überprüfen, um den Header-Wert mit einer Liste bekannter Malware-Fingerprints zu vergleichen, um böswillige Clients zu blockieren.

  • CloudFront-Viewer-TLS – Enthält die SSL/TLS-Version, die Verschlüsselung und die Informationen über den SSL/TTS-Handshake, die für die Verbindung zwischen Viewer und CloudFront verwendet wurden. Der Header-Wert weist das folgende Format auf:

    SSL/TLS_version:cipher:handshake_information

    Der handshake_information-Header kann einen der folgenden Werte enthalten:

    • fullHandshake – Für die SSL/TLS-Sitzung wurde ein vollständiger Handshake durchgeführt.

    • sessionResumed – Eine vorherige SSL/TLS-Sitzung wurde wieder aufgenommen.

    • connectionReused – Eine frühere SSL/TLS-Verbindung wurde wiederverwendet.

    Im Folgenden finden Sie einige Beispielwerte für diesen Header:

    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

    Eine vollständige Liste der möglichen SSL/TLS-Versionen und Verschlüsselungen, die in diesem Header-Wert enthalten sein können, finden Sie unter Unterstützte Protokolle und Verschlüsselungen zwischen Betrachtern und CloudFront.

Hinweise
  • Die JA3- und JA4-Fingerprints werden aus dem SSL/TLS-Client Hello-Paket abgeleitet. Sie sind nur für HTTPS-Anforderungen vorhanden.

  • Dese TLS-bezogenen Header können Sie zu einer Ursprungsanforderungsrichtlinie hinzufügen, aber nicht zu einer Cache-Richtlinie.

Andere CloudFront-Header

Sie können die folgenden Header hinzufügen, um den ursprünglichen Anforderungs-URI, die Abfragezeichenfolgeparameter und Werte der ursprünglichen Anforderung, das Protokoll und die Version zu ermitteln:

  • CloudFront-Error-Uri – enthält den ursprünglichen Anforderung-URI, der vom Viewer empfangen wurde.

  • CloudFront-Error-Args – enthält die Abfragezeichenfolgeparameter und Werte der ursprünglichen Anforderung.

  • CloudFront-Forwarded-Proto – Enthält das Protokoll der Anforderung des Viewers (HTTP oder HTTPS).

  • CloudFront-Viewer-Http-Version – Enthält die HTTP-Version der Anforderung des Viewers.