Media CDN ti consente di specificare intestazioni di richieste e risposte personalizzate.
Le intestazioni personalizzate ti consentono di:
- Restituisce dati geografici sul client, ad esempio paese, regione o città, che puoi utilizzare per mostrare contenuti localizzati.
- Determina se una risposta è stata pubblicata dalla cache (in tutto o in parte) e da quale posizione della cache è stata pubblicata.
- Rimuovi, sostituisci o aggiungi alle intestazioni di richiesta e risposta.
Impostare intestazioni personalizzate
Le intestazioni vengono impostate su ogni percorso, il che ti consente di aggiungere e rimuovere intestazioni per contenuti diversi, come manifest o segmenti video.
Imposta le intestazioni delle richieste personalizzate per route all'inizio del percorso di elaborazione della CDN, prima
delle decisioni di memorizzazione nella cache. Ad esempio, se imposti un'intestazione cache-control come intestazione personalizzata per route, influisce sul comportamento di memorizzazione nella cache nella CDN.
Per impostazione predefinita, i valori delle intestazioni aggiunti sono separati da virgole e vengono aggiunti alle intestazioni di risposta o di richiesta con gli stessi nomi di campo.
Per sovrascrivere i valori esistenti, imposta replace su true.
gcloud e YAML
Per elencare la configurazione YAML per la risorsa EdgeCacheService, utilizza
il seguente comando:
gcloud edge-cache services describe prod-media-service
La sezione .routing.pathMatchers[].routeRules[].headerAction mostra
le intestazioni da aggiungere e rimuovere:
routeRules:
- priority: 1
   description: "video routes"
   matchRules:
      - prefixMatch: "/video/"
   headerAction:
      responseHeadersToAdd:
      # Return the country (or region) associated with the client's IP address.
      - headerName: "client-geo"
         headerValue: "{client_region}"
         replace: true
      requestHeadersToAdd:
      # Inform the upstream origin server the request is from Media CDN
      - headerName: "x-downstream-cdn"
         headerValue: "Media CDN"
      responseHeadersToRemove:
      - headerName: "X-User-ID"
      - headerName: "X-Other-Internal-Header"
Terraform
Il seguente snippet Terraform mostra una regola di routing con intestazioni personalizzate.
Questo esempio esegue le seguenti operazioni:
- Aggiunge un'intestazione client-geopersonalizzata alla risposta utilizzando la variabile{client_region}, che restituisce il paese (o la regione) associato all'indirizzo IP del client.
- Aggiunge un'intestazione x-downstream-cdnpersonalizzata alla richiesta utilizzando una stringa statica.
- Rimuove due intestazioni interne.
Per configurare intestazioni personalizzate specifiche per l'origine, vedi Configurare le riscritture dell'host o le modifiche delle intestazioni specifiche per l'origine.
Variabili di intestazione dinamiche
Le intestazioni personalizzate possono contenere una o più variabili dinamiche.
Le intestazioni delle richieste che fanno parte dei criteri della chiave della cache (cacheKeyPolicy.includedHeaderNames)
possono contenere una o più variabili personalizzate. Le intestazioni delle richieste che contengono altre
variabili dinamiche non possono far parte della chiave cache.
| Variabile | Descrizione | Supportato per le intestazioni delle richieste | Supportato per le intestazioni delle richieste in una chiave cache | Supportato per le intestazioni delle risposte | 
|---|---|---|---|---|
| cdn_cache_status | Un elenco separato da virgole delle località (codice IATA dell'aeroporto più vicino) e degli stati di ogni nodo della cache nel percorso richiesta/risposta, in cui il valore più a destra rappresenta la cache più vicina all'utente. | ✔ | ||
| client_city | Il nome della città da cui ha avuto origine la richiesta, ad esempio Mountain Viewper Mountain View, California. Non esiste
            un elenco canonico di valori validi per questa variabile. I nomi delle città possono
            contenere lettere, numeri, spazi e i seguenti caratteri US-ASCII:!#$%&'*+-.^_`|~. | ✔ | ✔ | |
| client_city_lat_long | La latitudine e la longitudine della città da cui ha avuto origine la richiesta, ad esempio 37.386051,-122.083851per una richiesta da Mountain View. | ✔ | ✔ | |
| client_region | Il paese (o la regione) associato all'indirizzo IP del client. Si tratta di un codice regione Unicode CLDR, ad esempio USoFR.
           Per la maggior parte dei paesi, questi codici corrispondono direttamente ai
           codici ISO-3166-2. | ✔ | ✔ | ✔ | 
| client_region_subdivision | La suddivisione, ad esempio la provincia o lo stato, del paese
           associato all'indirizzo IP del client. Si tratta di un ID suddivisione CLDR Unicode, ad esempio USCAoCAON. Questi codici Unicode
           derivano dalle suddivisioni definite dallo
           standard ISO-3166-2. | ✔ | ✔ | ✔ | 
| client_rtt_msec | Il tempo di trasmissione di round trip stimato tra la CDN e il client HTTP(S), in millisecondi. Questo è il parametro del tempo di round trip (SRTT) uniforme misurato dallo stack TCP della CDN, in base all'RFC 2988. | ✔ | ✔ | |
| device_request_type | Il tipo di dispositivo utilizzato dal cliente. Questi sono i valori
             validi: DESKTOP,MOBILE,TABLET,SMART_TV,GAME_CONSOLE,WEARABLE,
             eUNDETERMINED. | ✔ | ✔ | |
| host | L'host e il numero di porta del server a cui è stata originariamente inviata la richiesta del client, corrispondenti al valore dell'intestazione della richiesta Hostper HTTP/1.1 o della pseudo-intestazione:authorityper HTTP/2. | ✔ | ✔ | |
| original_request_id | L'identificatore univoco assegnato alla richiesta che ha generato
             originariamente questa risposta. Compilato solo se è diverso da request_idper le risposte memorizzate nella cache. | ✔ | ||
| origin_name | La risorsa EdgeCacheOriginda cui è stato eseguito il proxy della risposta. | ✔ | ||
| origin_request_header | Riflette il valore dell'intestazione Origin nella richiesta per i casi d'uso di condivisione delle risorse tra origini (CORS). | ✔ | ||
| proxy_status | Un elenco di proxy HTTP intermedi nel percorso di risposta. Il valore
             è definito
             dallo standard RFC 9209.
             Una risorsa EdgeCacheServiceè rappresentata daGoogle-Edge-Cache. Se la risposta è stata recuperata dall'origine,
             una risorsaEdgeCacheOriginè rappresentata daGoogle-Edge-Cache-Origin. | ✔ | ||
| tls_sni_hostname | L'indicazione del nome del server (come definita nella RFC 6066), se fornita dal client durante l'handshake TLS o QUIC. Il nome host viene convertito in lettere minuscole e il punto finale viene rimosso. | ✔ | ✔ | |
| tls_version | La versione TLS negoziata tra il client e il bilanciatore del carico
            durante l'handshake SSL. I valori possibili includono TLSv1,TLSv1.1,TLSv1.2eTLSv1.3. Se il client si connette utilizzando QUIC anziché
            TLS, il valore è QUIC. | ✔ | ✔ | |
| tls_cipher_suite | La suite di crittografia negoziata durante il TLS handshake. Il valore è definito
            dal registro delle
            suite di crittografia TLS IANA, ad esempio TLS_RSA_WITH_AES_128_GCM_SHA256. Questo valore è vuoto
            per le connessioni client QUIC e non criptate. | ✔ | ✔ | |
| user_agent_family | La famiglia di browser che il client sta utilizzando. Questi sono i valori
             validi: APPLE,APPLEWEBKIT,BLACKBERRY,DOCOMO,GECKO,GOOGLE,KHTML,KOREAN,MICROSOFT,MSIE,NOKIA,NETFRONT,OBIGO,OPENWAVE,OPERA,OTHER,POLARIS,TELECA,SEMC,SMITeUSER_DEFINED. | ✔ | ✔ | 
Per le variabili personalizzate valgono le seguenti considerazioni:
- Le intestazioni di richiesta e risposta esistenti vengono conservate, ad eccezione delle seguenti, che vengono rimosse: - X-User-IP
- Tutte le intestazioni con X-GoogleoX-GFE
 
- Le chiavi e i valori delle intestazioni devono essere conformi al documento RFC 7230, con i moduli obsoleti non consentiti. 
- Tutte le chiavi di intestazione sono in minuscolo (per HTTP/2). 
- Alcune intestazioni sono state unite. Quando sono presenti più istanze della stessa chiave di intestazione (ad esempio - Via), il bilanciatore del carico combina i relativi valori in un unico elenco separato da virgole per una singola chiave di intestazione. Vengono uniti solo gli header i cui valori possono essere rappresentati come un elenco separato da virgole. Altre intestazioni, come- Set-Cookie, non vengono mai unite.
- Alcune intestazioni vengono aggiunte o i valori vengono aggiunti. Media CDN aggiunge o modifica sempre determinate intestazioni, ad esempio - X-Forwarded-For.
- Media CDN espande qualsiasi intestazione della risposta con una variabile supportata, anche se impostata dal client o dall'origine. In questo modo puoi impostare intestazioni dinamiche dal client (ad esempio un video player) o dall'infrastruttura di origine, oltre a configurare intestazioni personalizzate. 
- Ad esempio, in base alle regole descritte in precedenza, le intestazioni - X-Goog-e- X-Amz-vengono mantenute e convertite in minuscolo.
Valori dello stato della cache
La variabile di intestazione {cdn_cache_status} può restituire più valori
corrispondenti al livello di cache che ha fornito la risposta. Tieni presente le
seguenti linee guida per interpretare la variabile di intestazione {cdn_cache_status}:
- Se l'intestazione contiene hit, i contenuti richiesti sono stati recuperati dalla cache.
- Se l'intestazione contiene miss, i contenuti richiesti non sono stati trovati in un nodo della cache e sono stati recuperati da un nodo upstream.
- Se l'intestazione contiene fetch, i contenuti richiesti sono stati recuperati dall'origine.
- Se l'intestazione contiene - uncacheable, i contenuti richiesti sono stati considerati non memorizzabili nella cache da alcuni o tutti i componenti dell'infrastruttura di memorizzazione nella cache.- Se l'intestazione contiene anche hitomiss, i contenuti richiesti sono stati considerati non memorizzabili nella cache da alcuni componenti di memorizzazione nella cache e memorizzabili nella cache da altri.
- Se l'intestazione non contiene anche hitomiss, i contenuti richiesti sono stati considerati non memorizzabili nella cache da tutti i componenti di memorizzazione nella cache e tutte le richieste di questi contenuti vengono recuperate dall'origine. Per assicurarti che i tuoi contenuti vengano memorizzati nella cache in modo appropriato, consulta i requisiti dell'origine di Media CDN.
 
- Se l'intestazione contiene anche 
Intestazioni predefinite
Media CDN aggiunge le seguenti intestazioni di richieste e risposte rispettivamente alle richieste di origine e alle risposte dei client.
| Intestazione | Descrizione | Richiesta | Risposta | 
|---|---|---|---|
| x-request-id | Un identificatore univoco per la richiesta specificata. Questo valore viene aggiunto anche
            al log delle richieste come jsonPayload.requestId, che
            ti consente di correlare una richiesta/risposta del client a una voce di log. | ✔ | |
| age | Restituisce l'età dell'oggetto memorizzato nella cache (il numero di secondi in cui è stato nella cache). L'età viene in genere calcolata in base alla data in cui l'oggetto è stato inizialmente memorizzato nella cache in una posizione di cache long tail (shield). Le risposte senza un'intestazione  | ✔ | |
| server | È impostato su Google-Edge-Cache. | ✔ | |
| cdn-loop | Identifica i loop, ad esempio quando l'host di origine è lo stesso dell'host rivolto all'utente (edge). Un token di  | ✔ | |
| forwarded | La versione strutturata dell'intestazione  Queste intestazioni consentono di identificare l'indirizzo IP del client di connessione quando nel percorso è presente un proxy o più proxy. Ad esempio, se un
                client con indirizzo IP  
 Nel caso di più proxy lato client, il client che si è connesso a Media CDN è l'ultimo indirizzo aggiunto nel valore dell'intestazione. | ✔ | |
| x-forwarded-for | La versione non strutturata e standard de facto dell'intestazione
                 Entrambe le intestazioni vengono inviate in una richiesta per supportare le origini legacy che potrebbero
                non conoscere l'intestazione  | ✔ | 
Le chiavi delle intestazioni sono in minuscolo sia per le intestazioni delle richieste sia per quelle delle risposte perché non fanno distinzione tra maiuscole e minuscole.
È possibile aggiungere altre intestazioni, tra cui la posizione del punto di presenza (PoP) edge e lo stato della cache (ad esempio hit e miss), utilizzando le variabili di intestazione dinamiche.