Hatalmas információs fejlécek. Mik azok a HTTP fejlécek? Általános elmélet. Egy adott probléma leírása

Ma úgy döntöttünk, hogy arról beszélünk, mit jelent egy üzenet "Figyelmeztetés: A fejléc információk nem módosíthatók – a fejléceket már elküldte (a kimenet a /home/... címen indult), amely egy webhely oldalán jelenik meg a fő tartalma helyett.
Mint kiderült, az interneten eleget írnak erről a témáról, de nincs általános instrukció arról, hogy mindez mit jelent, és hogyan lehet megszabadulni tőle.
Úgy döntöttünk, hogy hozzáadunk néhány cseppet a témával kapcsolatos hatalmas információtengerhez, mivel személyesen találkoztunk ezzel a problémával.

Néhány évvel ezelőtt több ügyféloldalt helyeztünk át egyik tárhelyről a másikra.
Minden rendben ment, az oldalak elérhetőek voltak, de amikor megpróbáltam bejelentkezni az adminba. panel, a bejelentkezési név és a jelszó megadása után a vezérlőpult helyett egy fehér oldal jelent meg.
Megnéztük más oldalakat is – ugyanez.
Annak érdekében, hogy megtudja lehetséges okok, engedélyeztük a hibajelzést.
Ehhez FTP-n keresztül szerkeszteni kell a webhely gyökerében található .htaccess fájlt, és hozzá kell adni a következő sort:

Php_flag display_errors bekapcsolva

Ezt követően az adminisztrációs panelre belépve több olyan üzenet jelent meg, mint „Figyelem: A fejléc információit nem lehet módosítani – a fejléceket már elküldte (a kimenet a /home/.../functions.php:1552 címen indult) a /home/.../ mappában public_html /wp-login.php a 362-es vonalon”, stb.

A keresés eredményeként olyan információt találtunk, hogy ez az üzenet azt jelzi, hogy a fejléc információit nem lehet megváltoztatni, mert a fejléceket (azokról szóló információkat) már korábban elküldték, majd zárójelben jelezték, hogy ez melyik fájlban mely sorokban történt. .


Címsorok (Fejlécek) annak a szervernek a szolgáltatási információi, amelyen a webhely található. Mielőtt a böngésző megjeleníti az oldal tartalmát, fejléceket kap a szervertől, amelyek különböző adatokat jeleznek: engedélyezve van-e az oldal gyorsítótárazása, a kódolás, az oldaltartalom típusa és egyebek. A webhelytartalom-kezelő rendszerekben a fejléceket a bennük található funkciók generálják különféle fájlokat rendszerek.
Kötelező feltétel- a fejléceket az oldal fő tartalma (tartalma) előtt kell elküldeni.


Ha az oldal tartalma a fejlécek előtt kerül továbbításra, akkor olyan helyzet áll elő, amelyre a „Figyelem: A fejléc információit nem lehet módosítani – a fejléceket már elküldte...” üzenet figyelmeztet.

Milyen helyzetekben fordulhat elő ez? Mint már említettük, a modern CMS-ben a fejlécek egy vagy több függvény eredménye. Maga a függvény egy bizonyos kódrészlet, amely az iniciálé közé van zárva és végleges ?> címkéket.

Minden, ami ezeken a címkéken kívül esik, oldaltartalomnak minősül.
Így, ha az oldal elején vannak olyan függvények, amelyek eredményeként fejléceket küldenek, és a „Figyelem: Nem módosítható a fejlécinformáció...” üzenetet kapjuk, akkor kiderül, hogy bizonyos információk az oldal tartalmához kapcsolódnak. az oldalt a szerver a fejlécek előtt küldi el.

Mi ez az információ, és hogyan lehet megtalálni. Leggyakrabban ezek szóközök és üres sorok.

A szóköz vagy üres sor karakterként értelmeződik az oldal fő tartalmában, így kiderül, hogy a fő tartalom egy része a fejlécek elé kerül, és először a böngészőhöz kerül.

Le kell töltenie a „Figyelmeztetés: A fejlécinformációkat nem lehet módosítani...” üzenetekben megadott fájlokat helyi számítógép, nyissa meg egy kódszerkesztőben (én NotePad++-t használom), és alaposan ellenőrizze, hogy nincsenek-e üres sorok és szóközök:

Van azonban egy fontos funkció, amely jelentősen megnövelheti a megoldás megtalálásának idejét.
A fájl nem tartalmazhat üres sorokat vagy szóközöket, de ha UTF-8 kódolással mentették, akkor a szerkesztő, amelyben a fájl készült, beszúrhat egy idegen karaktert a dokumentum elejére. Ez a karakter egy nulla szélességű szóközzel megegyező UTF-8 azonosító, amely lehet, hogy egyáltalán nem jelenik meg a szerkesztőben, de a szerveren ez lesz a fő tartalom, és a címsorok előtt jelenik meg.

Ahhoz, hogy megszabaduljon ettől az azonosítótól, újra kell mentenie a letöltött fájlokat a formátumban UTF-8 anyagjegyzék nélkül(UTF-8 BOM nélkül).

A NotePad++ tökéletesen megbirkózik ezzel a feladattal.

Ezen műveletek és a kiszolgálón lévő fájlok frissítése után az üzenetnek el kell tűnnie, és a webhely a megszokott módon fog működni.

Beküldve: Cs, 2017.05.04 - 12:55

Egy adott probléma leírása

A gombra kattintás után hibaüzenet jelenik meg:

Figyelmeztetés: A fejlécadatok nem módosíthatók – a 12. sorban a C:\OpenServer\domains\testsite\WEB\5_phpRedirect.php fájlban már elküldött fejlécek (a kimenet a C:\OpenServer\domains\testsite\WEB\5_phpRedirect.php:10 címen indult)

A kód hasonló az ebben a témában megadotthoz:

Kísérleti web

Válassza ki a letölteni kívánt szkriptet

Kezelő szkript:

Mikor történik ez

Hiba (figyelmeztetés) típusa:

Figyelmeztetés: A fejlécadatok nem módosíthatók – a fejléceket már elküldte

Akkor fordul elő, ha már megtett valamit, amihez be kell állítani a böngésző fejléceit, és most újakkal szeretné átírni őket. Például, ha már megjelenített szöveget, akkor a php beállítja a fejléceket (különösen a fejlécet Elhelyezkedés-- amely megmutatja, hogy a kért oldalon kell-e maradni, vagy át kell-e menni egy másik oldalra és ott választ kapni a kérésre), hogy az ügyfél böngészőjének (válaszában) megmutassa, hogyan kell viselkedni.

A probléma gyökere

Valószínűleg az a probléma az Ön esetében, hogy már kiszolgálja a tartalmat (html címkék, amelyek keverednek a fájlban a szkripttel) hogy parancsok:

Echo fejléc($átirányítás);

Ne feledje, hogy a header() függvény csak akkor hívható meg, ha a kliens még nincs adatátvitel. Ez azt jelenti, hogy a kimenetben az első helyen kell szerepelnie, nem lehetnek HTML-címkék, üres sorok stb. Gyakran előfordul hiba, amikor a kód beolvasásakor olyan fájlfüggvényekkel, mint az include vagy a request, szóközök vagy üres sorok vannak ebben a kódban, amelyek a header() meghívása előtt kerülnek kinyomtatásra. Ugyanezek a problémák merülhetnek fel egyetlen PHP/HTML fájl használatakor is.

Azaz meg kell szabadítani a szkriptkezelőt a html-től - elvégre lényegében nem ad ki semmit maga, hanem egyszerűen átviszi egy másik címre - ez az első.

Fejléc($átirányítás);

Echo fejléc($átirányítás);

Kísérlet

Mivel az echo() általában erre ír http válasz törzse, és nem a fejlécekben, és a fejléc void-ot ad vissza (vagyis nem ad vissza értékeket), ahogy fentebb említettük, akkor nincs értelme az echo()-t használni, de
- ennek ellenére javaslom egy kísérlet elvégzését:

  1. távolítsa el a html-t
  2. ne távolítsa el a visszhangot

Mivel a header() lényegében az echo() előtt van meghívva (mivel a header() az echo() argumentuma, és ezért visszaadja - egyúttal ellenőrizzük, hogy a függvény nullát ad-e vissza - üres karakterláncként lesz értelmezve, ill. (ami vagy inkább) echo nem is kezd el működni, ha már megtörtént az átirányítás.

Tisztázzuk még egyszer az okot

Azok. a header() hívása előtt nem szabad tartalmat megjeleníteni(amiről a függvény leírásában van írva: http://php.net/manual/ru/function.header...)

  • 1) sem visszhanggal
  • 2) nem egyszerűen html szöveg beírásával a böngészőbe.

Esetünkben az echo látszólag nem befolyásol semmit, de a kezelőben lévő html valóban.

a probléma megoldódott

Az ön tanácsára eltávolították őket HTML címkék. Most az átirányítás megfelelően történik, a kezelő szkript így néz ki:

A visszhang funkció nem igazán befolyásolja a működést, pl. Meghagyhatod úgy is, mint S. Holznernél:

Az átirányítás kódjának megírásakor ügyeljen arra is, hogy milyen kiterjesztésre kerüljön sor annak a fájlnak a kiterjesztésére, amelyre az áttérés történik: a javasolt szintaxisnál ezt meg kell adni a fejléc argumentumában.

  • Jelentkezzen be a hozzászólásokhoz

De sikerülhet

De az előző kezelőt is működőképessé teheti

Felhasználói átirányítás

ha beállítod a lehetőséget a php.ini fájlban

Kimeneti_pufferelés = 4096

  • Jelentkezzen be a hozzászólásokhoz

A fejlécek újraküldése tilos, a HTTP protokoll nem így működik! De mit tegyünk? Ha az oldalon való megjelenés után munkamenetet is kell indítania és cookie-t kell beállítania? - Emlékezzünk a kimeneti pufferelésre.

Vagyis ha nem nulla pufferméret van beállítva, akkor amíg az meg nem telik, továbbra is lehet manipulálni a fejléceket. Ha a puffer mérete nulla, a tartalom kiadása után azonnal visszaküldésre kerül előzte meg HTTP válaszfejlécek átadása az ügyfélnek.

És kiderül, hogy azokat a fejléceket, amelyek már „repültek” a hálózaton, át akarjuk állítani a kliensre (ami azt jelenti, hogy már nem lehet javítani őket - különösen a fejlécet Elhelyezkedés, ami jelzi, hogy maradjunk-e a kért oldalon, vagy kérjünk egy másikat - az „átirányító” szkript válasza (nálunk ez egy űrlapkezelő) csak annyit mond, hogy újabb oldalt kell kérnünk), erre figyelmeztet a php .

De: Persze így (pontosabban nem túl helyesen) megoldani a problémát lehetetlen.

_____________
A VSU Matematikai Kara és más klasszikusok =)

  • Jelentkezzen be a hozzászólásokhoz

A HTTP-fejlécek és a HTTP-fejlécmezők megértése

HTTP fejlécek a HTTP-tranzakciók küldéséhez szükséges létfontosságú információkat http protokoll.

Az általános HTTP-fejlécformátum kettősponttal elválasztott név-érték párokat tartalmaz a fejlécben. A név-érték pár mindegyike kocsivissza- (CR) és soremelés (LF) karaktersorozattal végződik. Az egyes fejlécek végén lévő üres mezők jelzik a fejléc végét.

A közös fejlécformátum, amelyet az alkalmazások követnek, így néz ki:

A HTTP-fejlécek típusai

A HTTP üzenet fejléceknek négy típusa van. Ezek a következők:

  • Általános fejléc
  • Kérelem fejléce
  • Válasz fejléc
  • Entitásfejléc

Általános fejléc

Az általános fejléc mezők általánosan alkalmazhatók kérés- és válaszüzenetekben. A fejlécmezők csak a továbbított üzenetre vonatkoznak, az átvitt entitásra nem.

Az általános fejléc szerkezete így néz ki:

Cache-vezérlés mező olyan direktívákat ad meg, amelyeket minden gyorsítótárazási mechanizmusnak követnie kell egy kérés- és válaszrendszeren.

Kapcsolat mező lehetővé teszi a feladó számára a kapcsolathoz szükséges beállítások megadását. A kapcsolat fejlécének formátuma a következő:

Dátum mező az üzenet kezdeményezésének dátumát és időpontját jelöli. A HTTP-ben megadott dátumformátum így néz ki:

Pragma mező segít beilleszteni a végrehajtás-specifikus direktívát, amely a kérés- és válaszrendszer bármely címzettjére vonatkozik.

Utánfutó A mező értéke azt határozza meg, hogy az üzenetelőzetesben lévő fejlécmezők készlete chunk transfer-kódolással van-e kódolva.

Transzfer-kódolás mező azt jelzi, hogy alkalmaznak-e bármilyen típusú átalakítást az üzenettörzsre.

Frissítés mező lehetővé teszi az ügyfelek számára további támogatott kommunikációs protokollok megadását. Lehetővé teszi azt is, hogy a kiszolgáló protokollt váltson a további protokollokkal.

Keresztül A mező a proxyk és az átjárók által használt kötelező mezők, amelyek közbenső protokollokat jeleznek. Jelzi továbbá a kérés címzettjét a felhasználói ügynök és a szerver között, valamint a választ a szerver és a kliens között.

Figyelmeztetés mező további információkat tartalmaz az üzenet állapotáról és az üzenetátalakításokról, amelyek nem jelennek meg az üzenetben.

A figyelmeztető fejléceket általában válaszokkal együtt küldik el.

A kérelem fejlécmezője lehetővé teszi az ügyfelek számára, hogy a kérésinformációkat és az ügyféladatokat is továbbítsák a kiszolgálónak.

A kérés fejlécének szerkezete így néz ki:

Elfogadás mező megadja a válaszadáshoz elfogadható médiatípusokat.

A „*” a médiatípusok tartományon belüli csoportosítására szolgál

A „*/*” az összes médiatípust jelzi

A "típus/*" egy típus összes altípusát jelzi

Elfogadás-karakter mező az elfogadható karakterkészleteket jelzi. Lehetővé teszi az ügyfelek számára, hogy megértsék a speciális célú karakterkészleteket, hogy jelezzék a szervernek, hogy a dokumentumot ezekben a karakterkészletekben jelenítse meg.

Elfogadás-kódolás mező hasonló az Accept mezőhöz, korlátozza a válasz elfogadható tartalomkódolását.

Elfogadás-Nyelv mező hasonló az Elfogadás mezőhöz, korlátozza a természetes nyelvek preferált halmazát.

Engedélyezés mező azoknak a felhasználói ügynököknek szól, akik hitelesíteni kívánják magukat a szerveren.

Elvárni mező az ügyfél által megkövetelt szerver viselkedést jelzi.

Tól mező egy olyan felhasználó e-mail címét tartalmazza, aki felügyeli a kérelmező felhasználói ügynököt.

Házigazda mező megadja az internetes gazdagépet és a felhasználói URI-tól kért erőforrás portszámot.

Ha-Match mezőt feltételes metódusok készítésére használják.

Ha-Módosítva-Azóta mezőt feltételes metódus készítésére használjuk. Ha a kért változatot nem módosítják a megadott időn belül, az entitás nem kerül visszaadásra a szerverről.

Ha-Nincs-Egyezés mező lehetővé teszi a gyorsítótár-információk hatékony frissítését minimális tranzakciós többletköltséggel.

Ha-Tartomány mező lehetővé teszi az ügyfelek számára, hogy megkapják a hiányzó entitás egy részét, vagy más módon, az ügyfelek kérhetik a teljes új entitás elküldését.

Ha-Módosítatlan-Azóta mező lehetővé teszi a szerver számára a kért művelet végrehajtását, ha az ebben a mezőben megadott idő óta nem módosult.

Max Forwards mező olyan mechanizmusokat biztosít a TRACE és OPTIONS metódusokkal, amelyek korlátozzák a kéréstovábbítási proxykat vagy átjárókat.

Meghatalmazott engedélyezése mező lehetővé teszi az ügyfél azonosítását a biztonságos proxy számára.

Hatótávolság mező határozza meg a HTTP-entitásokat a HTTP-üzenetekben, amelyek bájtok sorozataként jelennek meg. A HTTP lekérési kérés az entitás egy vagy több altartományát kéri le GET metódusokkal.

Hivatkozó mező lehetővé teszi az ügyfelek számára, hogy megadják annak az erőforrásnak az URI címét, amelyből a Request-URI megtalálható.

T.E. mező a kiterjesztés átviteli kódját jelzi, amelyet a válaszban elfogadhat. Ezenkívül jelzi, hogy elfogadja-e az utánfutó mezőket a darab átviteli kódolásban.

User-Agent mező információkat tartalmaz a kérelmező felhasználói ügynökről.

HTTP válaszfejléc

A válaszfejléc mező lehetővé teszi, hogy a kiszolgáló további információkat továbbítson a válaszokon keresztül, az egyszerű Status-Line válaszon kívül.

A válaszfejléc szerkezete így néz ki:

Elfogadás-tartományok mező lehetővé teszi a szerverek számára, hogy jelezzék az erőforrás-tartomány kérelmek elfogadását.

Kor A mező a feladónak azt az időtartamát jelzi, amely óta a szerver válaszol.

Etag mező megadja a kérés entitáscímkéjének aktuális értékét.

Elhelyezkedés mező átirányítja a címzetteket a Request-URI-tól eltérő helyekre, hogy befejezze az új erőforrás azonosítását.

Proxy-hitelesítés mező kötelező megadása a proxy hitelesítési válaszhoz.

Retry-After A mező válaszként kerül felhasználásra, ha egy szolgáltatás nem érhető el, jelezve azt az időtartamot, ameddig a szolgáltatás elérhetetlen marad az ügyfél számára.

Szerver mező információkat tartalmaz a szerver által a kérések kezelésére használt szoftverekről.

Vary A mező a kérés mezőt jelöli, amely meghatározza, hogy a gyorsítótár alkalmas-e a kérés válaszának használatára a válasz újraérvényesítése nélkül.

WWW-Hitelesítés mezőket akkor használjuk, ha a válaszüzenet jogosulatlan.

Az entitásfejléc mezők metainformációkat határoznak meg az entitástörzsről vagy a kért erőforrásról. Az entitásfejléc formátuma így néz ki:

Engedélyezze mező felsorolja a Request-URI azonosított erőforrások által támogatott metódusokat.

Tartalom-kódolás mező médiatípus módosítóként használatos.

Tartalom-Nyelv mező a természetes nyelvet írja le egy entitás ügyfelei számára.

Tartalom-hossz mező jelzi a decimális számmal ábrázolt entitás méretét.

Tartalom-hely mező megadja az erőforrás helyét egy entitás számára, ha az a kért URI-tól eltérő helyről érhető el.

Tartalom-MD5 mező üzenetintegritás-ellenőrzést (MIC) biztosít az entitástörzs MD5-kivonatával.

Tartalom-tartomány mező megadja, hogy hol kell alkalmazni a teljes entitástest részleges törzsét.

Tartalom-típus mező azt jelzi, hogy az entitástörzs médiatípusát elküldték-e a címzettnek, vagy a GET metódust használják a kérések küldésére.

Lejár mező azt a dátumot/időt adja meg, amely után a válasz elavulttá válik.

Utoljára módosítva mező a változat utolsó módosításának dátumát és időpontját jelzi.

Az a sorrend, ahogyan a mező neve megjelenik a fejlécben, nem jelentős. Hagyományosan az általános fejléceket helyezik el először, majd a kérés vagy válasz fejlécet, a végén entitásfejléccel.

Szerzői jogi megjegyzés: Kérjük, ne másolja vagy fordítsa le ezt a cikket a webhely előzetes írásos engedélye nélkül

A HTTP Debugger egy proxy nélküli HTTP-elemző fejlesztők számára, amely lehetővé teszi HTTP-fejlécek, cookie-k, POST-paraméterek, HTTP-tartalom és CORS-fejlécek rögzítését és elemzését bármely böngészőből vagy asztali alkalmazásból.

Félelmetes felhasználói felület és nagyon könnyen használható. Nem proxy, nincs hálózati probléma!

Ebben a cikkben megvizsgáljuk, hogy milyen fejlécekre van szükség, anélkül, hogy részleteznénk, melyik miért felelős. A leggyakoribb címsorok szerepét a következő cikkekben ismertetjük.

  • A sorozat összes cikke:

Mik azok a HTTP fejlécek? Általános elmélet. HTTP a HyperText Transfer Protocol rövidítése. A protokoll olyan szabályok összessége, amelyek szerint különböző eszközök
adatokat cserélni. Az 1990-es években hozták létre. Ma már szinte mindenhol használják az interneten. Minden, amit a böngészőablakban lát, ezen a protokollon keresztül szerezte be. A http fejlécek talán a legfontosabbak az eszközök közötti kommunikációban. Alapvető információkat közölnek a létrejövő kapcsolatról és a kapcsolaton keresztül továbbított információkról.

Vessünk egy pillantást a két eszköz közötti kommunikációs diagramra. Legyen ezek az eszközök az Ön számítógépe és néhány kiszolgáló az interneten:

Mint látható, a böngésző http kérést küldött. Valahogy így nézhet ki:
GET /egyéb-19 HTTP/1.1
Házigazda: www.scriptsite.ru
Elfogadás: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru,en-us;q=0.7,en;q=0.3
Elfogadás-kódolás: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0,7,*;q=0,7
Életben tartás: 300
Csatlakozás: életben tartás

Ebben az esetben az első sor a kérés sora, az összes többi sor http fejléc, amely hordoz további információk a kérésről, az ügyfélről, aki ezt az információt kéri, sok más dologról.
Kérésünkre a szerver a következő fejléceket tudja küldeni:

Szerver: Apache/2.0.61 (Unix) mod_ssl/2.0.61 OpenSSL/0.9.8k mod_dp20/0.99.2 PHP/5.2.5 mod_python/3.3.1 Python/2.5.1 mod_ruby/1.2.6 Ruby/1.8.6 (2007-09-24)

X-Powered-By: PHP/5.2.5

Set-Cookie: PHPSESSID=ft47gokfee6amv3eda3k1p93s3; útvonal =/

Cache-Control: nincs tárhely, nincs gyorsítótár, újra kell érvényesíteni, utólagos ellenőrzés=0, előzetes ellenőrzés=0

Pragma: nincs gyorsítótár

Életben tartás: időtúllépés=10, max=1024

Csatlakozás: Keep-Alive

Átviteli kódolás: darabolt

Tartalom típusa: szöveg/html

Az első sor az állapotsor. A fennmaradó sorok fejlécek. A diagram megmutatta, hogy az oldal tartalma is betöltődik. De ez a tartalom általában nem jelenik meg a fejlécmegjelenítő bővítményekben. Az oldal tartalma pedig csak egy speciális eset. A protokoll szerint az oldalt nem feltétlenül kell továbbítani. Ehelyett kép, hangfájl és videó is továbbítható. És mindegyiknek nagyon eltérő címsora lesz.

Hogyan lehet látni a http fejléceket?

A http fejlécek megtekintéséhez javaslom a következő bővítményeket a firefox böngészőhöz:

Ha használ Chrome böngésző, minden információt megtekinthet a beállítások gombra kattintva - eszközök - fejlesztői eszközök. Hálózatok lap.
Az Opera böngészőt használóknak nem tudok tanácsot adni, mivel nem barátkozom ezzel a böngészővel. Miután a beépülő modulok telepítve vannak és futnak, próbálja meg frissíteni az oldalt. Azonnal látni fogja a kérések és válaszok hatalmas listáit, amelyeken keresztül a böngésző kommunikált a szerverrel.

Http fejlécek és hozzáférésük php-ban

Ha Ön PHP fejlesztő, a getallheaders() függvény segítségével elérheti a kérés fejléceit. A működés megértéséhez futtassuk a következő kódot:

És kinyomtatjuk a fejléctömböt.

De gyakrabban érhetők el a $_SERVER globális változón keresztül. Szinte minden http fejlécnek van hasonló elemneve ebben a változóban, amely a HTTP_fejléc_neve elv szerint van kialakítva. Tehát ugyanannak a ‘User_Agent’-nek van egy változója: $_SERVER['HTTP_USER_AGENT'];

A fejlécek lekéréséhez, amelyeket a szerver küld a felhasználónak, a headers_list() függvényt használjuk. Általános szabály, hogy a szerver az összes szkript végén összeállítja a hiányzó szükséges fejléceket. Ezért ez a tömb vagy azokat a fejléceket tartalmazza, amelyeket a szerver hozott létre a szkript végrehajtása előtt (és ezek nem változnak), vagy azokat, amelyeket kézzel állítottunk be. Manuálisan beállíthatók a header("header text") függvény segítségével;
Futtassuk a következő kódot:

A függvény meghívásakor a fejlécek kinyomtatása készen áll a küldésre:

Az első fejléc automatikusan lett beállítva, és annak a kiszolgálónak a nevét tartalmazza, amelyen a szkript fut. A másodikat saját kezűleg telepítettük. Ha a böngészőnek szüksége volt a "Fruit" fejlécre, akkor azt a szerver http válaszából veszi, és használja. De mivel a böngészőnknek nincs rá szüksége, egyszerűen figyelmen kívül hagyja azt a sort, amelyet nem ért.

HTTP kérés szerkezete

A mi kérésünk így néz ki:

Az első sor benne, mint korábban említettük, a lekérdező sor. Három részből áll:

  • módszer(módszer) - jelzi, hogy milyen típusú kérést. A leggyakoribb módszerek: GET, POST, HEAD. Róluk a következő bekezdésben lesz szó.
  • útvonal(útvonal) – általában az URL-nek ez a része a domain után. Például, ha beírja a http://www.scriptsite.ru/about/ címet a címsorba, az elérési út értéke /about/ lesz.
  • jegyzőkönyv(protokoll) – a használt protokoll. Általában a "HTTP"-ből és a protokoll verziójából áll. A modern böngészők általában az 1.1-es verziót használják

Ezután jönnek a fejlécek a „Név: érték” formátumú karakterláncok formájában.
Ebben a kérésben egyébként a cookie-adatok is továbbításra kerülnek, mint az egyik fejléc. E sorok többsége nem kötelező. A lekérdezés két sorra redukálható:

Szerezze be /article/show/4/ HTTP/1.1

Házigazda: scriptsite.ru

Kérési módszerek

KAP

A get kérés általában egy dokumentum kérésére és bizonyos paraméterek átadására szolgál.
Ez a fő módszer a HTML-oldalak, képek, CSS- és JavaScript-fájlok stb. beszerzésére.
Tekintettel arra, hogy a paraméterek bármiek lehetnek, és a szervernek nincs korlátozása a feldolgozásukra vonatkozóan, az adatkérési módszert gyakran használják információtovábbításra. Például lesz egy ilyen űrlapunk

Ebben az esetben ezek a paraméterek a böngésző címsorában lesznek láthatók.

POST

A postázás az a módszer, amellyel adatokat küldenek a szerverre. Bár a böngésző címsorán keresztül GET metódussal is küldhet adatokat a szervernek, a legtöbb esetben célszerű a POST használata. Nagy mennyiségű adat küldése GET-en keresztül nem praktikus. Ezenkívül a GET-nek vannak olyan korlátozásai, amelyek nem teszik lehetővé például, hogy ezt a cikket egyetlen böngészősoron keresztül közzétegyem a webhelyemen. POST kérések leggyakrabban webes űrlapok beküldésére használják. Módosítsuk az előző példában szereplő űrlapot úgy, hogy POST metódus legyen