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:
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:
- távolítsa el a html-t
- 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
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