Menü
Ingyenes
bejegyzés
itthon  /  Multimédia/ Mi az adatátvitel a get módszerrel. Akció attribútuma és módszere

Mi az a get method adatátvitel. Akció attribútuma és módszere

Két fogalom van, amely szinte minden programban közös: a bemeneti adatok feldolgozása és az eredmények kiadása. Ezen az oldalon a CGI programok bevitelének kezelésére fogunk összpontosítani. Először is, honnan származik a bemenet, másodszor pedig, hogyan továbbítják a bemenetet a szerverhez. Hatékony CGI-programok írásához világosan meg kell értenie ezeket a dolgokat.

Egy kicsit a HTTP-ről

A szerver három típusú kérést fogad el: GET, POST és HEAD. A webszervernek küldött programkérelem így néz ki:

GET /index.html HTTP / 1.0

Az első rész, jelen esetben a GET a kérés metódusa, a második, az index.html a kért URL, a harmadik, a HTTP / 1.0 pedig a kliens által használt protokoll.

A két fő kérési módszer a GET és a POST. Ezek ugyanazok a módszerek, amelyek az űrlap létrehozásakor állnak rendelkezésre. A HEAD metódust ritkán használja a böngésző, mert csak a válaszfejlécet kéri, a válasz törzsét ebben az esetben nem küldi el. Például annak ellenőrzésére, hogy az oldal változott-e, a böngésző kérhet fejlécet, de ez nem generál teljes adatcserét.

GET módszer

Alapértelmezés szerint a kérés a GET metódust használja. A POST metódus csak akkor használatos, ha kifejezetten meg van adva az űrlapkérésben. Nagyon fontos, hogy egy CGI programozó megértse, hogy amikor egy GET-kérés érkezik, az űrlapadatokat az URL-lel együtt elküldik a szervernek. A CGI-t támogató webszerverek átmásolják ezeket az adatokat ide környezeti változó QUERY_STRING néven. Ezt követően a CGI program felelős az adatok beszerzéséért a környezeti változóból és azok feldolgozásáért.

A lekérdezési karakterláncot tartalmazó URL így néz ki:

Http://www.domen-name.com/login.pl?nick=maks&psw=parol

Jel? elválasztja a lekérdezési karakterláncot az erőforrás tényleges URL-jétől; A nick és a psw a szervernek átadott változók, a maks és a parol pedig ezek értékei.

POST módszer

A POST metódus akkor használatos, ha kifejezetten meg van adva az űrlap METHOD attribútumában. A GET metódussal ellentétben a POST nem az URL-ben, hanem a kérés törzsében helyezi el az adatokat. A POST-kérés nagyon hasonlít egy HTTP-válaszra. Az első sor egy szabványos HTTP-kérés, amely a POST metódust határozza meg. Tartalmazhatja a szükséges további fejléceket, amelyeket egy üres sor választ el a kérés törzsétől.

A POST metódus használatakor a kérés törzse szabványos bemenetként kerül átadásra a programnak.

A GET és a POST közötti választás

Nyilvánvaló, hogy az űrlapok fejlesztése során a CGI programozónak szembe kell néznie azzal a kérdéssel, hogy melyik módszert használja. A legtöbb esetben mindkét módszer működik, és mindkettő jól működik. Vannak azonban olyan helyzetek, amikor az egyik vagy másik módszer alkalmazása bizonyos előnyökkel jár.

Nézzünk meg néhány olyan helyzetet, amikor érdemes a GET vagy POST módszert előnyben részesíteni.

  • Ha azt szeretné, hogy a programját hivatkozással hívják meg, a GET módszert kell előnyben részesíteni.
  • Ha nem szeretné, hogy a programnak átadott argumentumok a szerver naplófájljába kerüljenek, használja a POST metódust. Például, ha egy űrlap felhasználónevet és jelszót igényel, valószínűleg nem szeretné, hogy a nevek és jelszavak a jelentésfájlba kerüljenek. Ezenkívül nem bölcs dolog a jelszót az URL részeként átadni.
  • Ha az űrlapnak jelentős méretei vannak, például szövegdobozok vannak megjegyzésekkel és megjegyzésekkel, akkor a POST módszert kell használnia. Általánosságban elmondható, hogy ebben az esetben is használhatja a GET metódust, de akkor előfordulhat, hogy az URL méretkorlátozásai eltérőek operációs rendszerés böngészők (a környezeti változók mérete korlátozza). Egyszerűbb a POST módszer használata.
  • Ha az űrlap fájlmezőt tartalmaz, használja a POST módszert. Ezenkívül ebben az esetben az ENCTYPE attribútum értékét többrészes / form-data értékre kell állítani.

GET módszerekés a POST to HTTP és a HTTPS a két legnépszerűbb módszer, amellyel a HTTP (Hypertext Transfer Protocol) protokollt használó adatátvitelt használnak az ügyfélről a szerverre. A GET és a POST egyaránt használható kérések küldésére és válaszok fogadására, de a kettő között jelentős különbség van.

A HTTP vagy HTTPS GET és POST kérései közötti különbség népszerű kérdés minden webprogramozási interjúban. Mivel a HTML független az olyan webszerver-technológiától, mint a Java, ASP vagy PHP, és a HTTP a fő protokoll az internetes térben, a GET és POST metódusok megértésének fontosságát nem lehet egyértelműen figyelmen kívül hagyni. Ebben a cikkben megvizsgáljuk, mi az a HTTP GET metódus, mi az a HTTP POST metódus, mikor kell egy adott kérést használni, és mi a különbség köztük. Elemezzük az egyes fogalmakat külön-külön.

Mi az a HTML?

A HTML a weboldalak létrehozásának nyelve. A hiperszöveg olyan hiperhivatkozásokra utal, amelyeket egy HTML-oldal tartalmazhat. A jelölőnyelv arra utal, hogy a címkék hogyan határozzák meg az oldal elrendezését és az oldalon lévő elemeket.
Az alábbiakban a HTML példa amely egy címsorral és egy bekezdésnyi szöveggel rendelkező alapvető weboldal meghatározására szolgál:



<Голова>
<Название>TechTerms.com

<Тело>

Ez egy példa egy HTML-beli bekezdésre.

Az első sor határozza meg a dokumentumban található tartalom típusát., és amelyek mind szerepelnek a fenti példában. Az oldal címe, a metaadatok és a horgonyfájl hivatkozásai a tényleges oldaltartalom a címkék között vannak elhelyezve .

A web sok változáson ment keresztül az elmúlt néhány évtizedben, de mindig is a HTML volt a weboldalak fejlesztésének elsődleges nyelve. Érdekes módon, míg a webhelyek fejlettebbek és interaktívabbak lettek, a HTML egyszerűbb lett. Ha összehasonlítja egy HTML5-oldal forrását egy hasonló, HTML 4.01-ben vagy XHTML 1.0-ban írt oldallal, kevesebb kód lesz a HTML5-oldalon. Ennek az az oka, hogy a modern HTML a lépcsőzetes stíluslapokra vagy a JavaScriptre támaszkodik az oldalon belüli szinte minden elem formázásához.

Sok dinamikus webhely menet közben hoz létre weboldalakat szerveroldali szkriptnyelvek, például PHP vagy ASP használatával. Azonban még a dinamikus oldalakat is HTML használatával kell formázni. Ezért a szkriptnyelvek gyakran HTML-kódot generálnak, amelyet elküldenek a webböngészőnek.

A Hypertext Transfer Protocol (HTTP) az ügyfelek és a szerverek közötti kommunikációra készült, és úgy működik, mint egy kérés-válasz protokoll.

A webböngésző lehet a kliens, a webhelyet tároló számítógépen lévő alkalmazás pedig a szerver.

A kliens (böngésző) HTTP kérést küld a szervernek, a szerver választ ad vissza, amely a kérés állapotára vonatkozó információkat tartalmaz, és tartalmazhatja a kért tartalmat is.

Két kérési módszer GET és POST

Két általánosan használt módszer az ügyfél és a szerver közötti kérés-válaszra:

    GET - adatokat kér a megadott erőforrástól;

    POST – Elküldi a feldolgozásra szánt adatokat a megadott erőforrásnak.

A GET és POST fordítása szó szerint beszerzést és utófeldolgozást jelent.

További információ a HTTP-ről

A HTTP az adatátvitelre használt protokoll az interneten. Az Internet Protocol csomag része, és meghatározza az adatok weboldalra történő átviteléhez használt parancsokat és szolgáltatásokat.

A HTTP a szerver-kliens modellt használja. A kliens lehet otthoni számítógép, laptop, ill mobil eszköz... A HTTP-szerver általában egy webtárhely szoftver webszerver, például Apache vagy IIS. Amikor egy felhasználó hozzáfér egy webhelyhez, a böngésző kérést küld a megfelelő webszervernek, és HTTP-állapotkóddal válaszol. Ha az URL érvényes és a kapcsolat biztosított, a szerver elküldi a weblapot és a kapcsolódó fájlokat a böngészőnek.

A gyakori HTTP-állapotkódok a következők:

    200 - sikeres kérés (weboldal létezik);

    301 - folyamatosan mozog (gyakran átirányít egy új URL-re);

    401 - jogosulatlan kérés (engedélyezés szükséges);

    500 — Belső hiba szerver (gyakran hívják rossz konfiguráció szerver).

POST és GET HTTP-ben

A HTTP határozza meg a GET és POST parancsokat, amelyek az űrlapok beküldésének feldolgozására szolgálnak a webhelyeken. A CONNECT parancs az SSL használatával titkosított biztonságos kapcsolat elősegítésére szolgál. A titkosított HTTP-kapcsolatok HTTPS-en keresztül zajlanak, amely a biztonságos adatátvitelre tervezett HTTP-bővítmény.

A „http: //” kezdetű URL-ek szabványos hipertext átviteli protokollokon keresztül érhetők el, és alapértelmezés szerint a 80-as portot használják. A „https: //” kezdetű URL-ek biztonságosan érhetők el HTTPS kapcsolatés gyakran használja a 443-as portot.

POST

A POST egy sorozat rendszerellenőrzések számítógépek és más elektronikus eszközök hajtják végre, amikor be vannak kapcsolva. A vizsgálati eredmények megjeleníthetők a képernyőn, megjeleníthetők villogó LED-ekkel, vagy egyszerűen rögzíthetők belsőleg. V számítógépes rendszerek a POST művelet a rendszerindítási sorrend elején kerül végrehajtásra. Ha minden teszt sikeres, az indítási folyamat többi része automatikusan folytatódik.

A Mac és a Windows operációs rendszerek a POST-t futtatják minden alkalommal, amikor a számítógép elindul vagy újraindul. Csekk beolvasása Hardverés biztosítja a processzor, a RAM és a tárolóeszközök megfelelő működését. Ha hiba történik a POST során, az indítási folyamat szünetelhet vagy teljesen leállhat, és a monitor megjeleníthet egy üzenetet, amely szerint a POST-hibák gyakran megjelennek a BIOS információs képernyőjén. Kiadhatók titkosítási kódként, például „08” vagy rendszerüzenetként, például „Rendszermemóriahiba eltoláskor”. Mac rendszeren a POST hibákat gyakran egyszerű grafikák jelölik, például egy törött mappa ikon, amely azt jelzi, hogy nem található rendszerindító eszköz.

Fizikai megnyilvánulások

Egyes esetekben előfordulhat, hogy a számítógép képernyője be sem kapcsol a POST hibák előtt. Ha ez megtörténik, a hibakódok villogó LED-ekkel ill hangjelzések... Például, Apple iMac három egymást követő hangot fog lejátszani, megáll öt másodpercre, majd ismétli a hangokat, ha rossz RAM-ot észlel az indítás során. A legtöbb PC sípoló hangot is ad, ha POST hibákat észlel, bár minden gyártó saját kódot használ.

A POST egy meglehetősen technikai kifejezés, amelyet csak az számítógépes technikusok rendszeresen. Ez azonban egy jó mozaikszó, mivel segít jobban megérteni a számítógépeken vagy más eszközökön megjelenő hibaüzeneteket elektronikus eszközök... Ha a számítógép POST-hiba miatt nem indul el, egy másik eszközzel keresheti meg a hiba jelentését és okát a gyártó webhelyéről. Ezután megteheti a megfelelő lépéseket - távolítsa el a memóriamodult vagy telepítse újra a videokártyát, majd indítsa újra a berendezést.

KAP

A POST a változók átadásának módszere is HTML űrlapok egyik weboldalról a másikra anélkül, hogy megjelennének a címsorban. Alternatív módszer a GET, amely értékeket ad az URL-hez. A HTTP POST kérések további adatokat biztosítanak a klienstől (böngészőtől) a szerverhez az üzenet szövegében. Ezzel szemben a GET kérések az összes szükséges adatot tartalmazzák az URL-ben. A HTML-ben lévő űrlapok bármilyen metódust használhatnak a method = POST vagy a method = GET (alapértelmezett) megadásával az elemen

... A megadott metódus határozza meg, hogy az űrlapadatok hogyan kerülnek a szerverre. A GET metódus használatakor az összes űrlapadat lekérdezési karakterlánc-paraméterként URL-kódolású. A POST segítségével az űrlapadatok megjelennek a HTTP kérés üzenetének törzsében.

Különbségek az űrlapok benyújtásában

A POST kérési módszer arra kéri a webszervert, hogy fogadja el és tárolja a kérésüzenet törzsében foglalt adatokat. Gyakran használják fájl feltöltésekor vagy kitöltött webes űrlap beküldésekor.

A HTTP GET kérési módszer információkat kér le a szerverről. A GET-kérés részeként bizonyos adatok átadhatók az URL lekérdezési karakterláncában, megadva a keresési kifejezéseket, dátumtartományokat vagy egyéb információkat, amelyek azonosítják a kérést.

A POST kérés részeként tetszőleges mennyiségű adat küldhető a szervernek a kérés üzenet törzsében. A POST-kérés fejlécmezője általában az üzenettörzs internetes médiatípusát jelzi.

A fő különbség a GET és a POST kérések között az, hogy a HTTP specifikációkban meghatározott különböző HTTP kéréseknek felelnek meg. Mindkét metódus beküldésének folyamata ugyanúgy kezdődik: az űrlapadatkészletet a böngésző hozza létre, majd az enctype attribútum által jelzett módon kódolja. A METHOD = "POST" esetén az enctype attribútum lehet többrészes / form-data vagy application / x-www-form-urlencoded, míg a METHOD = "GET " esetén csak az application / x-www-form-urlencoded segítségével aktiválódik. beállítják az adatokat, majd továbbítják a szervernek.

Űrlap beküldéséhez a METHOD = "GET" használatával a böngésző úgy hoz létre egy URL-t, hogy felveszi az action attribútum értékét, és hozzáadja az űrlap adatkészletét, amelyet az application / x-www-form-urlencoded tartalomtípussal kódolnak. A böngésző ezután úgy kezeli az URL-t, mintha egy hivatkozásra hivatkozna (vagy mintha a felhasználó manuálisan írta volna be az URL-t). A böngésző részekre bontja az URL-t, felismeri a gazdagépet, majd GET kérést küld annak a gazdagépnek, argumentumként az URL többi részével. Fontos megjegyezni, hogy ez a folyamat azt jelenti, hogy az űrlapadatok ASCII kódokra korlátozódnak. Különös gondot kell fordítani a más típusú karakterek kódolására és dekódolására, ha azokat ASCII formátumú URL-en keresztül továbbítják.

A METHOD = "POST" formátumú űrlap elküldése POST kérést eredményez az action attribútum értékével és az enctype attribútum által jelzett tartalomtípusnak megfelelően generált üzenettel.

PHP

A PHP be van ágyazva a HTML-be. Ez azt jelenti, hogy a PHP kód beilleszthető egy HTML oldalba. A PHP kódot az oldalt tároló szerver olvassa be vagy elemzi. A PHP GET és POST függvényeinek kimenete egy oldalon általában HTML formátumban kerül visszaadásra, amelyet a böngésző képes olvasni. Mivel a PHP kódot az oldal betöltése előtt HTML-vé alakítják, a felhasználók nem láthatják a PHP-kódot az oldalon. Így a PHP oldalak elegendőek az adatbázisok és más védett információk eléréséhez.

A legtöbb PHP szintaxis más nyelvekből kölcsönzött, például C, Java és Perl. A PHP-nek azonban számos egyedi és különleges tulajdonsága van. Ennek a nyelvnek az a célja, hogy a webfejlesztők gyorsan és egyszerűen írhassanak dinamikusan generált oldalakat.

Wordpress

A WordPress az ingyenes rendszer tartalomkezelés weboldalak létrehozásához és karbantartásához. Könnyű kezelhetősége és egyedi blogolási funkciói az internet legnépszerűbb blogkészítő eszközévé tették.

A WordPress felület lehetővé teszi, hogy bárki webfejlesztési tapasztalattal nem rendelkező weboldalt készítsen és publikáljon. A beépített blogkészítő eszközök segítségével egyszerűen nyomon követheti az egyes bejegyzéseket, látogatókat és felhasználói megjegyzéseket.

Bár több ezer elérhető WordPress sablonokés bővítmények, a WordPress POST GET rendszerének továbbra is megvannak a korlátai. Mivel ez egy sablon alapú szolgáltatás, a felhasználónak egy előre elkészített weboldallal kell kezdenie ahelyett, hogy a semmiből hozzon létre oldalakat. Ezenkívül nincs mód szkriptek beágyazására vagy adatbázis karbantartására olyan szintű vezérléssel, mint egy egyéni webhelyen.

A POST_GET_ID () eszköz lehetővé teszi, hogy szkripteket használjon az elem vezérlésére, mivel annak egyedi azonosítója van, és amikor ezekkel a módszerekkel küldi el űrlapként, a legördülő menü a következővel kerül elküldésre. egyedi azonosító amely lehetővé teszi a szkript számára, hogy észrevegye, melyik kiadvány fut. Alternatív megoldásként elküldhető egy rejtett változó, amely lehetővé teszi a szkript számára, hogy lássa, melyik bejegyzés tartozik a nézethez.

Ennek a bejegyzésnek az a célja, hogy elmagyarázza az adatok internetes átvitelének alapelveit két fő módszerrel: GET és POST. A műszakos munkagenerátor használati utasításának kiegészítéseként írtam meg azoknak, akiket alig érdekelnek a részletek ☺.

Nyissa meg a következő URL-t (ez vizuális magyarázatként szolgál): http://calendarin.net/calendar.php?year=2016 Megjegyzés: címsor böngésző: calendarin.net/calendar.php ? év = 2016 A fő fájl neve, utána egy kérdőjel (?) és egy "year" paraméter "2016" értékkel. Tehát a kérdőjel után csak egy GET kérés következik. Ez egyszerű. Ha egynél több paramétert szeretne átadni, de több paramétert, akkor azokat „és”-jel (&) kell elválasztani. Példa: calendarin.net/calendar.php ? év = 2016 és megjelenítés = munkanapok és szabadnapok

A fő fájl továbbra is neve, majd egy kérdőjel (?), majd - az "év" paraméter "2016" értékkel, majd - az "és" jel (&), majd - a "display" paraméter "munka" értékkel -napok-szabadnapok".

A GET paraméterei közvetlenül a böngésző címsorában módosíthatók. Például, ha a „2016” értéket „2017”-re módosítja, és megnyomja a gombot, a 2017-es naptárhoz jut.

Ez az adatok rejtett továbbítása (az oldal címe nem változik); vagyis csak egy program (script) segítségével láthatod, hogy mi került továbbításra. Például a szövegben szereplő karakterek számlálására szolgáló következő eszközben a forrásadatok továbbítása a POST módszerrel történik: http://usefulonlinetools.com/free/character-counter.php

Ha bármilyen kérdése, észrevétele és e-mailem van, álljon rendelkezésére.

A GET metóduson kívül, amelyet az előző bejegyzésben tárgyaltunk, van egy másik módszer a HTTP protokollon keresztüli kérés elküldésére - a POST módszer. A gyakorlatban is nagyon gyakran alkalmazzák a POST módszert.

Ha a szerver eléréséhez a GET metódussal elég volt beírnunk a kérést az URL-be, akkor a POST metódusban minden más elv szerint működik.

Az ilyen jellegű kérés teljesítéséhez a weblapon található type = "submit" attribútummal rendelkező gombra kell kattintanunk. Vegye figyelembe, hogy ez a gomb az elemben található a metódus attribútuma postra van állítva.

Fontolja meg ezt a HTML-t:

Írja be a szöveget:


Ha a felhasználó bármilyen szöveget beír a szövegmezőbe és rákattint a „Küldés” gombra, akkor a felhasználó által beírt tartalom értékével rendelkező szöveges változó elküldésre kerül a szerverre.

POST és GET kérések egyszerű kifejezésekkel

Ezt a változót a POST metódus küldi el.

Ha ilyen formában írod:

Ezután az adatok a GET módszerrel kerülnek elküldésre.

Ha GET kérés esetén az átvihető adatmennyiséget korlátozta a böngésző címsorának hossza, akkor POST kérés esetén nincs ilyen korlátozás, és jelentős mennyiséget tudunk továbbítani. információkról.

Egy másik különbség a POST módszer és a GET módszer között, a POST módszer elrejti az összes neki átadott változót és azok értékét a törzsében (Entity-Body). A GET metódus esetében ezek a kérés karakterláncban (Request-URI) kerültek tárolásra.

Íme egy példa a POST kérésre:

POST / HTTP / 1.0 \ r \ n
Házigazda: www.site.ru \ r \ n
Referencia: http://www.site.ru/index.html\r\n
Cookie: bevétel = 1 \ r \ n
Tartalom típusa: application / x-www-form-urlencoded \ r \ n
Tartalom-hossz: 35 \ r \ n
\ r \ n
bejelentkezés = Dima és jelszó = 12345

Így a POST metódussal történő adattovábbítással a támadónak sokkal nehezebb lesz azokat elfognia, mert el vannak rejtve a szem elől, így a POST módszer biztonságosabbnak tekinthető.

Ráadásul a POST metódus nemcsak szöveget, hanem multimédiás adatokat (képek, hang, videó) is tud továbbítani. Van egy speciális Content-Type paraméter, amely meghatározza, hogy milyen információt kell továbbítani.

Végül a POST változó az ezzel a módszerrel továbbított adatok lekérésére szolgál a szerveren.

Íme egy példa a PHP-ben történő feldolgozásra:

echo $ _POST [’szöveg’];
?>

Az utolsó bejegyzésben eldöntöttük, hogy a böngésző (kliens) mit küld HTTP szerver kéréseket, a szerver pedig HTTP-válaszokat küld a kliensnek. Ezeket a kéréseket és válaszokat bizonyos szabályok szerint dolgozzuk fel. Van valami, például a szintaxis, hogyan és milyen sorrendben kell írni. Kell lennie egy jól meghatározott szerkezetnek.

Nézzük meg közelebbről ezt a struktúrát, amely kérések és válaszok felépítésére szolgál a HTTP protokollban.

A HTTP-kérés három fő részből áll, amelyek pontosan az alább látható sorrendben jelennek meg. A fejlécek és az üzenet törzse között van egy üres sor (elválasztóként), ez egy soremelés karakter.

Üres karakterlánc (elválasztó)

Post and Get kérések, mi a különbség köztük, és melyik a jobb, és milyen célokra?

üzenet törzse (Entity Body) - opcionális paraméter

Lekérdezési karakterlánc- meghatározza az átviteli módot, az elérendő URL-t és a HTTP protokoll verzióját.

Címsorok- leírni az üzenetek törzsét, különféle paramétereket és egyéb információkat, információkat továbbítani.

üzenet törzse- ez maga az adat, amelyet a kérelemben továbbítanak. Az üzenet törzse nem kötelező, és elhagyható.

Amikor válaszkérést kapunk a szervertől, az üzenet törzse leggyakrabban a weboldal tartalma. De amikor kéréseket intézünk a szerverhez, ez néha jelen lehet, például amikor az űrlapon kitöltött adatokat továbbítjuk Visszacsatolás a szerverre.

Részletesebben, a kérelem minden egyes elemét megvizsgáljuk a következő megjegyzésekben.

Vegyünk példának egy valódi szerverkérést. A kérés minden részét saját színnel emeltem ki: a kérés sora zöld, a fejlécek narancssárga, az üzenet törzse kék.

Kérés a böngészőből:

Házigazda: webgyry.info

Cookie: wp-settings

Csatlakozás: életben tartás

A következő példában az üzenet törzse már jelen van.

Szerver válasz:

Tartalom típusa: szöveg / html; karakterkészlet = UTF-8

Átviteli kódolás: darabolt

Csatlakozás: életben tartás

Életben tartás: időtúllépés = 5

X-Pingback: //webgyry.info/xmlrpc.php

Névtelen dokumentum

Ezek azok az üzenetek, amelyek a kliens és a szerver között HTTP protokollon keresztül cserélődnek.

Egyébként szeretné tudni, hogy a Yandex Metrics és a Google Analytics "céljait" használva van-e értelme a webhely valamely elemének?

Vegye el azt, ami NEM működik, adja hozzá azt, ami működik, és duplázza meg az eredményt.

Tanfolyam a Yandex Metrica célok beállításáról ..

Tanfolyam a Google Analytics célok beállításáról..

A HTTP-kliens kérést küld a szervernek kérésüzenet formájában, amelynek formátuma a következő:

  • Kérelem karakterlánc (kötelező)
  • Cím (nem kötelező elem)
  • Üres karakterlánc (kötelező)
  • Üzenet törzse (nem kötelező)

Nézzük meg ezeket az elemeket külön-külön.

Lekérdezési karakterlánc

A kérés karakterlánca egy metódusjogkivonattal kezdődik, amelyet a kérés URI és a protokoll verziója követ. Az elemeket szóközök választják el egymástól:

Fontolgat adott elem részletekben

Kérési mód

Ez az elem határozza meg a megadott URI-n a szerver oldalon meghívandó metódust.

A HTTP-ben nyolc módszer létezik:

  • FEJ
    Az állapotsor és a cím lekérésére szolgál a szerverről URI-n keresztül. Nem változtatja meg az adatokat.
  • KAP
    Adatok fogadására szolgál a szervertől a megadott URI-n. Nem változtatja meg az adatokat.
  • POST
    Adatok küldésére szolgál a szervernek (például fejlesztői információk stb.) HTML űrlapok segítségével.
  • PUT
    Lecseréli az erőforrás összes korábbi adatát az újonnan betöltött adatokra.
  • TÖRÖL
    Eltávolítja az összes aktuális adatot az URI által megadott erőforrásról.
  • KAPCSOLAT
    Alagútkapcsolatot hoz létre a kiszolgálóval a megadott URI-n.
  • LEHETŐSÉGEK
    Leírja a kapcsolat tulajdonságait a megadott erőforráshoz.
  • NYOM
    A megadott erőforrás-URI helyének visszamenőleges nyomkövetését tartalmazó üzenetet biztosít.

URI kérése

Az URI (Uniform Resource Identifier) ​​annak az erőforrásnak az azonosítója, amelyre a kérést elküldték. A leggyakoribb URI formátum az alábbiakban látható:

‘*’ akkor használatos, ha a HTTP-kérés nem egy adott erőforrásra, hanem egy szerverre vonatkozik. Csak akkor használatos, ha a módszert nem kell alkalmazni az erőforrásra. Például,

abszolút uri akkor használatos, ha HTTP-kérés érkezik egy proxyhoz. A proxy kéri, hogy adja át a kérést a rendelkezésre álló gyorsítótárból, és választ ad vissza. Például:

asbolutny_path | egy forrás a legtöbb chatso használja.

Megtanulni dolgozni a GET és POST kérésekkel

Egy adott szerver adott erőforrását kérik. Például egy ügyfél erőforrást szeretne kapni a szervertől a 80-as porton keresztül. Az erőforrás címe „www.proselyte.net”, és a következő kérést küldi:

Fejlécmezők kérése

A fejléc mezők lehetővé teszik az ügyfél számára a kommunikációt További információ a kérésről és önmagáról a szervernek. Ezek a mezők kérésmódosítóként működnek.

Az alábbiakban felsoroljuk a legfontosabb használható fejlécmezőket:

  • Elfogadás-karakter
  • Elfogadás-Kódolás
  • Elfogadás-Nyelv
  • Engedélyezés
  • Elvárni
  • Ha-Match
  • Ha-Módosítva-Azóta
  • Ha-Nincs-Egyezés
  • Ha-Tartomány
  • Ha-Módosítatlan-Azóta
  • Hatótávolság
  • Hivatkozó
  • User-Agent

Ha saját klienst és saját webszervert szeretnénk megvalósítani, akkor létrehozhatunk saját fejléc mezőket.

Példa HTTP kérésre

Ezzel zárul a tanulmány. HTTP kérések.
A következő cikkben a HTTP-válaszokkal fogunk foglalkozni.

Az egyik módja annak, hogyan küldhet HTTP kérést a szervernek, a GET kérés. Ez a módszer a legelterjedtebb, és leggyakrabban a szerverhez intézett kérések is ennek használatával készülnek.

A GET kérés létrehozásának legegyszerűbb módja, ha beírja az URL-t a böngésző címsorába.

A böngésző a következő információkat továbbítja a szervernek:

GET / HTTP / 1.1
Házigazda: webgyry.info
Felhasználói ügynök: Mozilla / 5.0 (Windows NT 6.1; rv: 18.0) Gecko / 20100101 Firefox / 18.0
Elfogadás: szöveg / html, alkalmazás / xhtml + xml, alkalmazás / xml; q = 0,9, * / *; q = 0,8
Elfogadási nyelv: ru-RU, ru; q = 0,8, en-US; q = 0,5, en; q = 0,3
Elfogadás-kódolás: gzip, deflate
Cookie: wp-settings
Csatlakozás: életben tartás

A kérelem két részből áll:

1. kérősor

2.fejlécek (Üzenetfejlécek)

Felhívjuk figyelmét, hogy a GET kérésnek nincs üzenettörzs. Ez azonban nem jelenti azt, hogy a segítségével nem tudunk információt továbbítani a szerverre.

A GET és a POST metódusok közötti különbség

Ezt speciális GET-paraméterekkel lehet megtenni.

Ha GET-paramétereket szeretne hozzáadni a kéréshez, egy "?" jelet kell elhelyeznie az URL-cím végén. és ezt követően kezdje el megkérdezni őket a következő szabály szerint:

paraméter_neve1 = paraméter_értéke1 & paraméter_neve2 = paraméter_értéke2 & ...

A paraméterek közötti elválasztójel az "&" jel.

Például, ha két értéket szeretnénk átadni a szervernek, a felhasználónevet és az életkorát, akkor ezt a következő sorral tehetjük meg:

http://site.ru/page.php?name=dima&age=27

A lekérdezés végrehajtásakor az adatok az úgynevezett QUERY_STRING környezeti változóba kerülnek, ahonnan a szerveroldali webes programozási nyelv segítségével lekérhetők a szerveren.

Íme egy példa arra, hogyan lehet ezt megtenni PHP-ben.

echo "Az Ön neve:". $ _GET ["név"]. "
»;
echo "Az életkorod:". $ _GET ["életkor"]. "
»;
?>

A $ _GET ["parameter_name"] konstrukció lehetővé teszi az átadott paraméter értékének megjelenítését.

Ennek a kódnak a böngészőben történő végrehajtásának eredményeként a következő jelenik meg:

A neved: dima
Életkorod: 27

kérést is küldünk a szervernek a GET metódussal.

Ez a bejegyzés válasz az egyik cikkemhez fűzött megjegyzésben feltett kérdésre.

Ebben a cikkben szeretném elmondani, hogy mik a HTTP GET / POST / PUT / DELETE és mások, mire találták ki őket, és hogyan kell őket használni a REST szerint.

HTTP

Tehát mi is pontosan az internet egyik fő protokollja? A pedánsokat elküldöm az RFC2616-ra, a többit pedig elmondom, mint az ember :)

Ez a protokoll két számítógép (ügyfél és kiszolgáló) közötti kommunikációt írja le, a Request and Response nevű üzenetek alapján. Minden üzenet három részből áll: kezdősorból, fejlécekből és törzsből. Ebben az esetben csak a rajtvonalra van szükség.

A kérés és a válasz kezdősorai eltérő formátumúak - minket csak a kérés kezdősora érdekel, amely így néz ki:

MÓDSZER URI HTTP / VÁLTOZAT ,

Ahol a METHOD csak a HTTP kérési metódus, az URI az erőforrás azonosító, a VERSION pedig a protokoll verziója (by Ebben a pillanatban jelenlegi verzió 1.1).

A fejlécek név-érték párok gyűjteménye, kettősponttal elválasztva. A fejlécekben különféle szolgáltatási információk kerülnek továbbításra: üzenetkódolás, böngésző neve és verziója, cím, ahonnan a kliens érkezett (Referrer), stb.

Az üzenet törzse valójában a továbbított adatok. A válaszban a továbbított adat általában az a html oldal, amelyet a böngésző kért, a kérésben pedig például az üzenet törzsében a szerverre feltöltött fájlok tartalma kerül továbbításra. De általában az üzenet törzse egyáltalán nem szerepel a kérésben.

Példa HTTP kommunikációra

Nézzünk egy példát.

Vizsgálat:
GET /index.php HTTP / 1.1 Host: example.com User-Agent: Mozilla / 5.0 (X11; U; Linux i686; ru; rv: 1.9b5) Gecko / 2008050509 Firefox / 3.0b5 Elfogadás: szöveg / html Csatlakozás: bezár
Az első sor a kéréssor, a többi a fejléc; üzenettörzs hiányzik

Válasz:
HTTP / 1.0 200 OK Szerver: nginx / 0.6.31 Tartalom Nyelv: ru Tartalom típusa: szöveg / html; charset = utf-8 Tartalomhossz: 1234 Csatlakozás: bezár ... MAGA A HTML OLDAL ...

Erőforrások és módszerek

Térjünk vissza a kezdő lekérdezési karakterlánchoz, és ne feledjük, hogy az olyan paramétert tartalmaz, mint az URI. Ez az Uniform Resource Identifier rövidítése – egy egységes erőforrás-azonosító. Az erőforrás általában egy fájl a szerveren (egy példa URI ebben az esetben a "/styles.css"), de általában az erőforrás lehet egy absztrakt objektum ("/ blogs / webdev /" - jelzi a "Webfejlesztés" blokkot, és nem egy adott fájlhoz).

A HTTP kérés típusa (más néven HTTP metódus) közli a szerverrel, hogy milyen műveletet kívánunk végrehajtani az erőforrással. Kezdetben (a 90-es évek elején) azt feltételezték, hogy az ügyfél csak egy dolgot akarhat az erőforrástól - hogy megkapja, de most a HTTP protokoll használatával bejegyzéseket hozhat létre, szerkesztheti a profilt, törölhet üzeneteket és még sok mást. És ezeket a tevékenységeket nehéz összekapcsolni a „fogadás” kifejezéssel.

Az erőforrásokkal végzett műveletek HTTP-metódusok szintjén történő megkülönböztetésére a következő lehetőségeket találták ki:

  • GET – erőforrás megszerzése
  • POST - erőforrás létrehozása
  • PUT - erőforrás frissítés
  • DELETE – erőforrás törlése
Ügyeljen arra, hogy a HTTP specifikáció nem kötelezi a szervert az összes módszer megértésére (amely valójában sokkal több, mint 4) - csak a GET szükséges, és nem mondja meg a szervernek, hogy mit kell tennie kérés fogadásakor egy adott módszerrel. Ez azt jelenti, hogy a szerver válaszol egy DELETE /index.php HTTP / 1.1 kérésre nem köteles törölje az index.php oldalt a szerveren, ugyanúgy, mint a GET /index.php HTTP / 1.1 kérésnél nem köteles visszaadja neked az index.php oldalt, akkor törölheti, mint :)

A REST játékba lép

A REST (REpresentational State Transfer) – ezt a kifejezést 2000-ben Roy Fielding – a HTTP protokoll egyik fejlesztője – használta a webalkalmazások építésére vonatkozó elvek egy csoportjának elnevezéseként. A REST általában szélesebb területet fed le, mint a HTTP – más hálózatokon is használható más protokollokkal. A REST leírja a kliens-szerver interakció alapelveit az "erőforrás" és az "ige" fogalma alapján (ezeket tárgyként és állítmányként is értelmezheti). HTTP esetén az erőforrást az URI határozza meg, az ige pedig a HTTP metódus.

A REST azt javasolja, hogy hagyjuk fel ugyanazt az URI-t a különböző erőforrásokhoz (vagyis két különböző cikk címei, mint például az /index.php?article_id=10 és /index.php?article_id=20, nem REST-útvonalak), és különböző HTTP-módszerek a különböző műveletekhez. Azaz egy REST megközelítéssel írt webalkalmazás a HTTP DELETE metódussal elérve töröl egy erőforrást (persze ez nem azt jelenti, hogy mindent és mindent törölni kell, de Bármi az alkalmazás törlési kérelmének a HTTP DELETE metódust kell használnia).

A REST lehetővé teszi a programozóknak, hogy szabványosított és valamivel szebb webalkalmazásokat írjanak, mint valaha. A REST használatával az új felhasználó hozzáadásához szükséges URI nem /user.php?action=create (GET / POST metódus), hanem egyszerűen /user.php (szigorúan POST metódus).

Ennek eredményeként a meglévők egyesítése a HTTP specifikációés a REST megközelítés végre értelmet nyer a különféle HTTP-módszerek számára. GET - visszaad egy erőforrást, POST - újat hoz létre, PUT - frissít egy meglévőt, DELETE - törli.

Problémák?

Igen, van egy kis probléma a REST gyakorlati alkalmazásával. Ezt a problémát HTML-nek hívják.

A PUT / DELETE kérések elküldhetők XMLHttpRequest-en keresztül, a szerverrel "manuálisan" kapcsolatba lépve (mondjuk curl-en vagy akár telneten keresztül), de nem lehet teljes PUT / DELETE kérést küldő HTML űrlapot készíteni.

A lényeg az, hogy a HTML-specifikáció nem teszi lehetővé olyan űrlapok létrehozását, amelyek adatokat küldenek be GET-en vagy POST-on keresztül. Ezért a normál működéshez más módszerekkel mesterségesen kell utánoznia azokat. Például a Rackben (az a mechanizmus, amellyel a Ruby interakcióba lép a webszerverrel; a Rails, Merb és más Ruby keretrendszerek Rack segítségével készülnek) hozzáadhat egy „_method” nevű rejtett mezőt az űrlaphoz, és megadhatja a metódus értékeként (például "PUT") - ebben az esetben egy POST kérés kerül elküldésre, de a Rack képes úgy tenni, mintha PUT-t kapott volna, nem POST-ot.

Közös bennük, hogy ugyanúgy működnek. Technikailag nincs különbség köztük. De vannak ideológiai különbségek.

Ezeket a PHP kontextusában fogom bemutatni. Kérjük, vegye figyelembe, hogy HTTP protokoll közvetve kapcsolódik a PHP-hez, mert cserére jött létre html oldalak A PHP csak kiterjeszti mindkettő képességeit.

A GET kérés az adatok fogadására és a POST küldésére szolgál. (Emlékeztetőül: technikailag ugyanúgy működnek).

Ezért a PHP kontextusában erre az ideológiára alapozva a következőket tették:
1. A szuperglobális tömbök ($ _GET, $ _POST) alapértelmezés szerint a PHP minden indításakor jönnek létre.
2. Ha van kérdőjel (?) a lekérdezési karakterláncban. Aztán minden, ami utána számít paramétereket GET kérés esetén a „kulcs” = „érték” formátumban jelennek meg, és az „és” karaktert (&) használják elválasztóként
Példa:
GET /index.php?name=Andrey&vezetéknév=Galkin
ez egy lekérdezési karakterlánc, 2 paraméter van. ezek a paraméterek a $ _GET tömbbe kerülnek.
3. A $ _POST más módon van kitöltve. ennek a tömbnek a tartalma a "kérelem fejlécekből" van kitöltve. Vagyis egy explicit formában a szem elől elrejtett helyről. Az ilyen fejlécek létrehozásának minden rutinját átveszi a böngésző. Bár néha valamit manuálisan szerkesztenek a fejlécekben.

Leggyakrabban az űrlapokon (adatbeküldésre) használják a postai kérést.

Például van egy bejelentkezési űrlapunk, amely 2 mezőt tartalmaz bejelentkezési név és jelszó.

Képzeljük el, hogy a GET módszert használjuk. Ezután az űrlap elküldésekor a /login.php?login=Andrey&password=123 címre megyünk, és egyetértünk abban, hogy egyáltalán nem biztonságos ilyen jellegű információk továbbítása. Bárki megnyithatja a böngészőt, és elkezdve beírni a webhely címét, láthatja jelszavait és bejelentkezési adatait az előzményekből.

De ha POST módszerrel adtuk meg, akkor a következő kérést kapjuk:
POST /login.php (login = Andrey & jelszó = 123), ami zárójelben el lenne rejtve, és semmilyen módon nem menthető el a böngészőben.

Általánosságban, összefoglalva:
A GET egy adott oldal meghatározott módon történő elérése (rendezés, aktuális blogoldal, keresési karakterlánc stb.).
POST - olyan adatok küldésére, amelyek nem befolyásolják az oldal megjelenítését, abban az értelemben, hogy ezek az adatok csak a szkript végrehajtásának eredményét érintik (bejelentkezések, jelszavak, hitelkártyaszámok, üzenetek stb.).

És még egy jó hír, hogy például kombinálhatók
POST /index.php?page=login (login = Andrey & jelszó = 123) Azt hiszem, már eleget kifejtettem, hogy mi lesz belőle, és melyik tömbben milyen paraméterek fognak szerepelni.