HTTP zaglavlje Vary

Koja je funkcija HTTP zaglavlja Vary? 

Zaglavlje HTTP Vary je primarni mehanizam za vraćanje HTTP odgovora servera kako bi obavestio posredničke caching servere (poput proxy servera) da sadržaj veb-sajta varira ovisno o specifikacijama zahteva veb klijenta. Drugim rečima, upozorava ih da obrate pažnju koja verzija sadržaja je keširana i koja je prikazana različitim veb korisnicima.

Izvorni server mora koristiti zaglavlje Vary da obavesti sve posredničke servise keširanja da postoje različite verzije sadržaja. 

Možete postaviti bilo koje HTTP zaglavlje kao vrednost Vary zaglavlja, koje koristi veb sajt da otkrije odgovarajući sadržaj za prikazivanje, na primer Vary: User-Agent, Accept-Encoding, Cookie...

Vary: User-Agent

Moguće je da se različiti sadržaji prikazuju korisnicima desktop i mobilnih uređaja. Veb sajt razlikuje dve vrste posetilaca jer koristi informacije iz HTTP zahteva klijenta. HTTP User-Agent zaglavlje, koje je poslao klijent, sadrži informacije kao što su ime i verzija pregledača, operativni sistem korisnika itd. U tom slučaju veb sajt prikazuje odgovarajući sadržaj u zavisnosti od HTTP User-Agent zaglavlja klijenta.

HTTP zaglavlje se može dodati odgovoru servera: Vary: User-Agent.

Kada se korisnik direktno poveže na izvorni server, odgovarajuća verzija se prikazuje u skladu s podacima u zaglavlju HTTP User-Agent. 

Na primer, ako veb klijent pošalje sledeći zahtev ka veb sajtu: User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X) otkriće se kao mobilni korisnik tako da će server odgovoriti mobilnom verzijom.

Ako je zaglavlje: User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv: 42.0) Gecko/20100101 Firefox/42.0 desktop verzija će se prikazati kllijentu;

Ovu razliku će uzeti u obzir servisi za keširanje i crawling botovi prilikom indeksiranja stranice. Dakle, desktop verzije će se prikazivati korisnicima desktop računara, a verzije za mobilne uređaje će se prikazivati korisnicima mobilnih uređaja.

Ako izvorni server ne pošalje zaglavlje Vary : User-Agent, to može dovesti do sledećih situacija: 


-Veb keš/proxy: Veb kešu prvo pristupa desktop korisnik koji traži određenu stranicu. Server za keširanje zahteva i prima sadržaj ove stranice od izvornog servera (ne prima zaglavlje Vary: User-Agent). Zatim veb keš prosleđuje desktop verziju stranice i pravi kopiju. Nakon toga, veb kešu pristupa korisnik mobilnog telefona koji traži istu stranicu. Budući da keš server ne zna da bi trebao proveriti zaglavlje HTTP User-Agent, on ne pravi razliku između prvog i drugog korisnika, tako da služi dostupnoj verziji za radnu površinu.

-Pretraživači i njihovi botovi: Kada Googlebots posećuju veb-sajt, mogu se prikazati kao mobilni uređaji ili brauzeri koji pokušavaju da pristupe i indeksiraju svaku verziju sajta. Ako zaglavlje Vary: User-Agent nije poslato botovima, neće prepoznati druge verzije veb sajta osim indeksirane. Indeksiranje različitih verzija biće korisno nakon toga kada korisnici pregledaju ovu veb stranicu. Pretraživač će korisnike preusmeriti na pravu verziju u zavisnosti da li su korisnici mobilnih ili desktop računara.

Vary: Accept-Encoding


Još jedan slučaj upotrebe Vary zaglavlja je kada veb sajt služi kompresovan sadržaj. Zaglavlje koristi kompatibilnost sa starijim verzijama pregledača ili veb klijenata koji ne mogu obraditi kompresovani sadržaj. Ako veb klijent ne pošalje zaglavlje Accept-Encoding: gzip, deflate, sdch, server će reagovati nekompresovanim sadržajem.

Zaglavlje će biti dodato odgovoru servera: Vari: Accept-Encoding 

Ako ste omogućili kompresiju statičkog sadržaja cPanel -> Compression settings, HTTP Vary Header: Accept-Encoding se automatski postavlja i ne morate koristiti .htaccess file. Kompresija statičkog sadržaja upravlja se pomoću Apache modula - mod_deflate.

Kada određeni veb klijent podržava obradu kompresovanog sadržaja, to će se dostaviti serveru sa sledećim zaglavljem: 

Accept-Encoding: gzip,deflate,sdch

Na ovaj način server će znati da klijent podržava kompresovani sadržaj i poslaće ga tamo zajedno sa zaglavljem Content-Encoding: gzip. 

Ako matični server ne pošalje zaglavlje Vary: Accept-Encoding, to može dovesti do sledeće situacije: 

-Veb cache / proxy: Veb klijent koji podržava obradu kompresovani sadržaja pristupaće veb sajtu putem veb keša / proksija. Tada će veb keš poslužiti kompresovani sadržaj s matičnog servera kao odgovor i proslediti ga klijentu. Veb cache / proxy čuva kompresovanu verziju. Kada veb-klijent pregleda istu veb lokaciju koja ne može obraditi kompresovani sadržaj, veb cache ne zna da se mora proveriti dostupnost zaglavlja Accept-Encoding pa šalje isti kompresovani sadržaj. Stoga se veb sajt ne može učitati od strane veb klijenta.

Upravljanje zaglavljem HTTP Vary

HTTP zaglavlja (HTTP zahteva i HTTP odgovora) mogu se konfigurisati u Apache modulu (mod_headers) modifikovanjem .htaccess datoteke. 

Na primer, kada se tipovi datoteka kao što su .js, .css, .xml ili gz šalju veb klijentima, oni takođe dobijaju Vary: Accept-Encoding: 

<IfModule mod_headers.c>
<FilesMatch "\.(js|css|xml|gz)$">
Header append Vary: Accept-Encoding
</FilesMatch>
</IfModule>

HTTP zaglavljima se takođe može upravljati putem aplikacija naloga za hosting. Različito zaglavlje, na primer, može se konfigurisati putem PHP-a na sledeći način:

<?php
header("Vary: User-Agent");
?>

ili na WordPress veb-sajtu (iz function.php fajla) 

function add_vary_header ($headers)
{
$headers['Vary'] = 'User-Agent';
Return $headers;
}
add_filter('wp_headers', 'add_vary_header');
Obnovljen: 31. јануара 2020.

Da li Vam je ovaj članak bio koristan?

Slični članci