This page has been robot translated, sorry for typos if any. Original content here.

HTTP-Protokoll

Lassen Sie uns für die Quelle selbst herausfinden, was ein gemeinsames Protokoll ist. Ein Protokoll ist ein bestimmter Satz von Regeln, auch von Schlüsselzeichen, die für die Kommunikation zwischen Geräten ausgelegt sind. Es ist notwendig, damit Computer oder ihre Elemente einen Freund eines Freundes klar erkennen können.

Protokoll - ein Gespräch über Computer im Netzwerk.

Tatsächlich kann jeder Befehlssatz als Protokoll bezeichnet werden. In der Praxis gilt das Konzept eines Protokolls jedoch nur für die sogenannten Netzwerkprotokolle - die Sprachen der Computer in einem Netzwerk. Jedes Protokoll hat einen bestimmten Zweck und wird von einer speziellen Software unterstützt.

URL-, IP- und DNS-Adressen, Domains

Die URL (Uniform Resource Locator) ist also die vollständige Route des Dokuments . URL ist die Adresse, an der ein Dokument (eine Datei) im Internet eindeutig gefunden werden darf. Die Zeile, die Sie in das Feld "Adresse" Ihres Browsers eingeben, enthält auch die URL-Adresse des Dokuments.

Eine URL kann ein ziemlich raffiniertes Aussehen haben und auch aus verschiedenen Teilen bestehen. Betrachten Sie zunächst die einfachste URL:

Diese URL enthält drei Bestandteile: den Namen des Hosts, auf dem sich das Dokument befindet, den Namen des Protokolls, das zur Übertragung dieses Dokuments verwendet wird, sowie den Namen der Handlung selbst (Dateiname plus Erweiterung). Die Basis (und die einzige erforderliche Freigabe für das http-Protokoll) der Adresse ist der Hostname. Es definiert den Computer, auf dem sich die Handlung befindet (in einem Netzwerk werden einzelne Computer als Hosts bezeichnet ). Jeder Computer im Netzwerk ist ein Host und hat auch einen eindeutigen Namen (in diesem Netzwerk). Im obigen Beispiel ist rambler.ru der Name des Computers, auf dem das Dokument gefunden werden soll.

Hostnamen können auf doppelte Weise angegeben werden: unter Verwendung von DNS und auch unter Verwendung einer IP-Adresse. Eine IP-Adresse besteht aus vier durch einen Punkt getrennten Nummern. Jede Menge kann im Bereich von 0 bis 255 existieren. Zum Beispiel 192.168.2.1 .

In der Praxis ist die Verwendung von IP-Adressen jedoch unpraktisch, da Zahlen schwer zu merken sind. Daher wurde ein Domain Name System (DNS) eingeführt, bei dem jeder IP-Adresse ein Verhältnis eines Namens zugewiesen wird, der aus Buchstaben oder Zahlen besteht. Im obigen DNS-Beispiel war der Name beispielsweise rambler.ru und die IP-Adresse 217.73.192.109 entspricht dieser .

Es ist zu beachten, dass unterschiedliche DNS-Namen fast immer unterschiedlichen IP-Adressen entsprechen, dieselben IP-Adressen jedoch unterschiedlichen DNS-Namen entsprechen können. Beispielsweise haben so unterschiedliche DNS-Namen wie www.rambler.ru und rambler.ru einen Namen, der auch eine IP-Adresse hat. In URLs dürfen sowohl DNS-Namen als auch IP-Adressen verwendet werden. Daher sind die beiden URLs http://rambler.ru/index.html auch http://217.73.192.109/index.html gleichwertig. Einige Methoden zum Festlegen der IP-Adresse werden hier beschrieben: http://www.xakep.ru/post/11980/default.htm .

Beachten Sie auch, dass ein Host im Prinzip keinen Domainnamen besitzen muss. Das heißt, einige Hosts dürfen nur über die IP-Adresse zugreifen.

Sie haben wahrscheinlich bereits darauf geachtet, dass jeder DNS-Name aus separaten Wörtern besteht, die durch Punkte getrennt sind. Jeder Name bedeutet einzeln die Domäne, zu der der Host gehört. Das gesamte DNS-System ist hierarchisch aufgebaut. Alle Domänen der 1. Ebene (com, org, ru usw.) sind in der Stammdomäne der 0. Ebene enthalten (die normalerweise nicht in DNS geschrieben wird, wie dies standardmäßig impliziert ist). Domänen einer anderen Ebene (z. B. Rambler, Mail oder Kiew) betreten auch die Domänen der Hauptebene usw. Domänen in DNS werden von rechts nach links in der Reihenfolge aufsteigender Ebenen aufgezeichnet.

Wir stellen zwei wichtige Merkmale fest: 1. Eine Domain ist eine rein administrative Einheit und repräsentiert keinen Host. 2. Die IP-Adresse hängt in keiner Weise von der Domäne ab, in der sich der Host befindet.

Daher wurde das Domänensystem lediglich zur Klassifizierung von Standorten nach geografischer oder Zielbasis eingeführt und hat auch keine Beziehung zum physischen Gerät des Internets.

In der bereitgestellten Beispiel-URL legen wir explizit den Namen der index.html- Aktion fest, an der wir interessiert sind. Auf jeder Site befindet sich jedoch ein Dokument, das standardmäßig geöffnet wird. Er als Position besitzt den Namen index.html oder default.html befindet sich ebenfalls im Stammordner der Site. Wenn wir die Site-URL eingeben, ohne den benötigten Dateinamen anzugeben, öffnet der Server automatisch den Standardakt für uns. Daher entspricht die Adresse http://crackchat.h1.ru der Adresse http://crackchat.h1.ru/index.html . So wie es eine offene Standarddatei gibt, gibt es auch einen Standardordner. Auf den meisten Servern besitzt der Standardordner für HTTP-Dokumente den WWW- Namen.

Nach DNS folgt der Name der Handlung, auf die wir uns beziehen, in der URL. Dies bedeutet, dass sich diese Datei im Stammordner befindet. Wenn dies nicht der Fall ist, können wir den gefüllten Weg zum Akt angeben und die Unterordner durch einen direkten Schrägstrich auflisten:

In diesem Beispiel verweisen wir auf die Datei im Ordner cgi-bin / perl / . Dieser Pfad ist relativ zum Stammordner. Wenn der Pfad zum Stammordner beispielsweise f: / www lautet, verweisen wir in unserem Beispiel auf die Datei f: /www/cgi-bin/perl/search.pl . Gleichzeitig ist es stolz, Folgendes zu berücksichtigen: Da die meisten Webserver auf UNIX-ähnlichen Systemen basieren, muss bei der Angabe der Route zur Datei der Unterschied zwischen Klein- und Großbuchstaben berücksichtigt werden. Wenn wir also unter der URL http://rambler.ru/CGI-BIN/perl/Search.pl auf die Datei zugegriffen hätten, hätte der Server eine solche Datei nicht gefunden. Der Unterschied zwischen eindrucksvollen und Kleinbuchstaben tritt nur auf dem Weg zur Datei auf, während bei DNS die Groß- und Kleinschreibung nicht berücksichtigt wird (dann entspricht RAMBLER.RU der Adresse rambler.ru ).

Wie bereits erwähnt, entspricht DNS einer streng definierten IP-Adresse. Dies bedeutet jedoch nicht, dass der DNS-Name dem Host entspricht, auf den wir zugreifen. Oft besitzt der Host selbst Domänen mit mehr Ebenen ohne Boden. Beispielsweise ist die Site h1.ru ein Host in einer Domäne einer anderen Ebene, enthält jedoch selbst Domänen der dritten Ebene, z. B. crackchat.h1.ru oder crosswords.h1.ru . Daher gehören diese Site-Paare zum selben Host und haben natürlich dieselbe IP-Adresse! In diesem Fall sehen Domains der dritten Ebene physisch wie Ordner auf der h1.ru- Host- Festplatte aus , und der Zugriff darauf kann folgendermaßen erfolgen: h1.ru/crackchat/ und auch h1.ru/crosswords/ . Das Zugriffstool (über eine Domäne der dritten Ebene oder über einen Festplattenpfad) wird durch die Servereinstellungen bestimmt.

Der Stammordner wird ebenfalls als Domain betrachtet, weshalb die meisten URLs auch in verschiedenen Formaten angegeben werden dürfen: sowohl mit der www-Domain (zum Beispiel www.crackchat.h1.ru ) als auch ohne diese ( crackchat.h1.ru ) - in diesem Fall ist der Server sowieso leitet Sie automatisch zum Ordner www weiter, da dieser standardmäßig akzeptiert wird.

Protokolle, Ports, CGI-Protokoll

Wie wir bereits gesehen haben, besteht die URL-Adresse aus drei Hauptelementen: DNS-Name, Dateiroute und Protokollname. Wenn Sie mit den ersten Elementen das Dokument finden können, bestimmt das Protokoll, wie auf das Dokument zugegriffen werden soll. Mit anderen Worten, zu welchem ​​Zeitpunkt der Kunde versucht, das Dokument zu empfangen, muss er dem Server mitteilen, wie er (der Server) gezwungen ist, diese Handlung an ihn (den Client) zu übertragen. Es gibt viele verschiedene Datenübertragungsprotokolle im Netzwerk, darunter http (Hypertext Transfer Protocol - Protokoll zum Übertragen von Hypertext-Dateien), ftp (File Transfer Protocol - Protokoll zum Übertragen von Dateien), mailto (Präfix der Familie der Mail-Protokolle), file (Dateizugriffsprotokoll) oder Ordner). Der Protokolltyp bestimmt das Programm, das Daten im Format dieses Protokolls verarbeiten kann. Internet Explorer kann also mit http- Protokollen arbeiten, auch FTP- Dateien , aber nicht mit Mailto- Protokollen. Wenn Sie also Ihren Browser in die Adressleiste von mailto: microsoft.com eingeben , wird ein spezielles Mailprogramm gestartet, das mit diesem Protokoll funktioniert (z. B. Outlook Express oder The Bat!). Der Protokollname wird durch das Wichtigste in der URL angegeben und sollte ebenfalls mit einem Doppelpunkt enden. Das Register spielt überhaupt keine Rolle.

Unter den Protokollen gibt es sehr bizarre, zum Beispiel das Res- oder About- Protokoll (zum Spaß können Sie die Adresse eingeben über: <a href="mailto:bill@microsoft.com"> Grüße an Bill senden </a> in der Adressleiste des Browsers sehen, was auch :) :) . Ein weiteres interessantes ldap- Protokoll (versuchen Sie zum Beispiel ldap: //microsoft.com ).

Nicht alle Protokolle können als Protokoll für eine URL fungieren. Da die About- oder Javascript- Protokolle nichts mit der vollständigen Route des Dokuments zu tun haben, auch weil die URLs mit diesen Protokollen überhaupt keine URLs sind.

Das Protokollpräfix gibt dem Kunden an, in welcher "Sprache" die Kommunikation mit dem Server beginnen soll. Und der Kunde weiß im Voraus, welches Programm diese Kommunikation durchführen soll, was über den Server nicht zu sagen ist. Damit der Server in der erforderlichen Protokollsprache mit uns "sprechen" kann, muss er (der Server) das entsprechende Programm ausführen, das dieses Protokoll versteht. Verwenden Sie Ports, um dieses Problem zu lösen. Wenn also der DNS-Name oder die IP-Adresse den Computer bestimmt, auf den wir zugreifen, bestimmt der Port das Programm, auf das wir auf diesem Host zugreifen. Ports werden durch eine Ganzzahl zwischen 0 und 65535 angezeigt.

Jedem Protokoll wird ein Standardport zugewiesen, über den das Serverprogramm auf Clientanforderungen wartet. Wenn der Server beispielsweise das http- Protokoll unterstützt, wartet das entsprechende Serverprogramm (z. B. Apache) auf Clientanforderungen an Port 80 (dieser Port wird standardmäßig für das http- Protokoll akzeptiert). Wenn dieser bla bla-Host auch das FTP- Protokoll unterstützt, wartet ein anderes Serverprogramm auf Anforderungen an Port 21 (dieser Port ist für das FTP- Protokoll reserviert).

Der Port, auf den wir zugreifen, wird automatisch ermittelt, je nachdem, welches Protokoll wir in der URL ausgewählt haben. Der Port darf aber auch explizit angeben. Die Portnummer wird über einen Doppelpunkt später als der DNS-Name oder die IP-Adresse angezeigt:

In dem angegebenen Beispiel wenden wir uns an ein bestimmtes Programm, das an Port 8080 „hängen geblieben“ ist. Wir bitten sie außerdem, uns die Datei index.html über das http- Protokoll zu geben. Wenn sich kein solches Programm auf dem Server befindet (dann verfolgt kein Programm Anforderungen an Port 8080 ), gibt uns der Browser eine Nachricht über die falsche URL.

Da Port 80 für http- Server standardmäßig akzeptiert wird, entspricht die Adresse http://rambler.ru:80 der Adresse http://rambler.ru . Grundsätzlich müssen Hosts http am 80. Port nicht unterstützen. Der Server kann beispielsweise an Port 3128 konfiguriert sein. Um zu diesem Zeitpunkt mit diesem Host über http zu kommunizieren, müssen Sie die Portnummer explizit ohne Unterbrechung explizit angeben: http://rambler.ru opinion128

Beim Zugriff auf den Server muss manchmal neben der Adresse des Vorgangs neben der Benutzer-ID angegeben werden, wer auf den Server zugreift (oder auf welche wir auf dem Server zugreifen), das Zugriffskennwort ist jedoch ähnlich. Mit der URL können Sie solche Informationen übertragen. Setzen Sie dazu ein @ -Zeichen vor den DNS-Namen, vor dem der Benutzername angegeben wird:

Für das http- Protokoll ist in der Regel keine Benutzerauthentifizierung erforderlich, für Protokolle wie FTP oder Mailto ist dies jedoch erforderlich. Neben dem Benutzernamen kann auch ein Zugangskennwort angegeben werden. Das Passwort ist kein Doppelpunkt mehr. Zum Beispiel: ftp: // masha: kasha@yahoo.com . Diese URL fordert das FTP- Protokoll für das Stammverzeichnis des Hosts yahoo.com für masha mit dem Kennwort kasha an . Eine solche Mailto- Adresse : //masha@mail.ru wird jedoch verwendet, um auf die Mailbox des Benutzers masha im Host mail.ru zuzugreifen .

Der Benutzername kann in ähnlicher Weise für ein Domänenprinzip existieren und auch aus verschiedenen durch einen Punkt getrennten Elementen bestehen. Zum Beispiel mailto: //bill.geits@microsoft.com .

Wie bereits erwähnt, ist eine URL eine gefüllte Dokumentroute. Ein Akt bedeutet jede Datei, die auch in Text (z. B. HTML- oder Dokument- oder PDF-Dateien) vorhanden sein kann, sowie ein Bild (JPG oder GIF) sowie ein Programm. Gleichzeitig impliziert das http-Protokoll, dass, wenn ein Text oder ein Bild in der URL angefordert wird, diese an den Benutzer übertragen werden müssen, um sie in seinem Browser anzuzeigen. Wenn jedoch ein Programm oder Skript angefordert wird, muss es auf dem Server gestartet und das Ergebnis seiner Arbeit an den Benutzer gesendet werden. Das Ergebnis selbst kann entweder in Text oder in einem Bild vorliegen. Die Art der resultierenden Handlung wird im Programm selbst bestimmt, und der Benutzer weiß nicht im Voraus, welche Art von Dokument er durch Aufrufen des Programms erhalten wird. Das Serverprogramm wird über die übliche URL-Adresse des Programms selbst oder des Skripts aufgerufen. In der Regel werden Skripte mit den Erweiterungen .pl .php .cgi im Netzwerk verwendet (die ersten beiden sind Programme, die sowohl in Perl als auch in PHP geschrieben sind, die letzte Erweiterung kann jedoch für alle ausführbaren Module verwendet werden, einschließlich auch für PHP und EXE für Perl). Für die URL http://www.rambler.ru/cgi-bin/top.cgi muss beispielsweise eine bestimmte top.cgi- Anwendung auf dem rambler.ru- Host ausgeführt und das Ergebnis dieser Anwendung an den Kunden übertragen werden (z. B. ein HTML-Dokument oder Bild).

Serveranwendungen wären jedoch etwas nutzlos, wenn Parameter nicht an sie übergeben werden könnten. URL erlaubt es. Zum Übertragen von Parametern an Serveranwendungen (sie werden auch als Gateways bezeichnet ) wird ein Datenübertragungsformat verwendet, das als CGI (Common Gateway Interface) bezeichnet wird. In diesem Format können Sie die Eingabedaten von Programmen in einer einzigen Zeile angeben.

Im obigen Beispiel ist zu sehen, dass die URL ein Server-Gateway namens search.pl aufruft. Außerdem wird ein Parameter mit dem Namen user als Eingabe übergeben, wodurch auch masha beendet wird . Lässt eine CGI-Zeichenfolge den Skriptnamen als Taskzeichen fallen ? . Wenn ein Skript mehrere Parameter übergeben muss, werden diese nacheinander über das kaufmännische Und-Symbol aufgelistet, z. B.: Http://rambler.ru/cgi-bin/perl/search.pl?user=masha&password=kasha .

Wir stellen Folgendes fest: Da die meisten WEB-Technologien auf Textdatenformaten basieren, tritt früher oder später das Problem auf, Befehle von Daten zu unterscheiden. Wenn wir beispielsweise einen bestimmten Ausdrucksparameter mit dem Wert C = A + B als CGI-Parameter übergeben möchten: http://site.com/script.cgi?expression=C=A+B, wird eine solche Anforderung von CGI seit einer anderen missverstanden Das Zeichen = wird als Trennzeichen zwischen dem Parameternamen und seinem Wert wahrgenommen. Daher wird im CGI-Protokoll (sowie in allen Räumlichkeiten einer URL) eine Sonderzeichencodierung namens URL Data Format verwendet. Diese Codierung zeigt die Buchstaben des lateinischen Alphabets wie sie sind und die verbleibenden Zeichen in Form von % nn an, wobei nn der hexadezimale Code des Zeichens ist. Zum Beispiel sieht das doppelte Anführungszeichen " wie % 22 aus , aber das Symbol = wie % 3D . Die Ausnahme ist das Leerzeichen, das zusätzlich zur Standardcodierung % 20 ähnlich als + codiert werden kann. Daher sollte die Beispiel-URL folgendermaßen geschrieben werden: http: // site .com / script.cgi? expression = C% 3DA% 2BB .

HTTP-Protokoll

HTTP (Hypertext Transfer Protocol) ist das Hauptprotokoll, das im Web verwendet wird. Trotz der Tatsache, dass das Protokoll als Hypertext-Übertragungsprotokoll (d. H. HTML) bezeichnet wird, kann in der Lektion das HTTP-Protokoll verwendet werden (und wird verwendet), um fast alle Daten im Netzwerk zu übertragen. Diese Übertragung auch Text und Bilder sowie Dateien. Die Popularität von HTTP hängt meiner Meinung nach mit mehreren Faktoren zusammen: Dies ist die Verwendung einer ziemlich universellen URL-Adressierung, die Fähigkeit, Daten zu übertragen (entweder vom Kunden zum Server oder umgekehrt), jedoch ist die Arbeit im No-Line-Modus ähnlich (d. H. Datenübertragung direkt zwischen Der Kunde ist auch ein Server ohne Vermittler. Das HTTP-Protokoll darf als dual bezeichnet werden, in dem Sinne, dass sich Daten im Client-Server-System in Richtungspaaren und auch vom Kunden zum Server sowie vom Server zum Client bewegen können. Die HTTP-Syntax zielt jedoch speziell auf die Übertragung von Daten vom Kunden zum Server ab.

Schauen wir uns also die einfachste Beispiel-HTTP-Anfrage an. Wenn wir im Adressfenster des Browsers die Adresse http://yandex.ru eingeben, ermittelt der Browser die IP-Adresse des Servers. Yandex.ru sendet ihm auch die folgende HTTP-Anfrage an Port 80:

GET http://yandex.ru/ HTTP / 1.0
Akzeptieren Sie: image / gif, image / x-xbitmap, image / jpeg, image / pjpeg, application / vnd.ms-excel, application / msword, application / vnd.ms-powerpoint, * / *
Akzeptieren-Sprache: ru
Cookie: yandexuid = 2464977781018373381
User-Agent: Mozilla / 4.0 (kompatibel; MSIE 5.5; Windows 98)
Gastgeber: yandex.ru
Referer: narod.ru
Proxy-Verbindung: Keep-Alive

Die Anfrage wird im Klartext übertragen. Der allererste Teil der Anfrage befindet sich in der ersten Zeile: Dies ist die Art der Anfrage ( GET ), die URL des angeforderten Dokuments ( http://yandex.ru ) ist auch eine Art HTTP-Protokoll ( HTTP / 1.0 ). Das Folgende sind die Abfrageparameter. Jede Zeile entspricht einem Parameter. An der Quelle der Zeichenfolge wird der Parametername verschoben, und der Doppelpunkt legt auch den Parameterwert fest. Die Bedeutung der Parameter ist intuitiv klar, aber wir werden die wichtigsten beschreiben: Akzeptieren - die Art von Daten, die der Browser akzeptieren kann (in MIME-Codierung). Accept-Language ist die bevorzugte Sprache, in der der Browser Daten empfangen möchte. User-Agent - Der Programmtyp, der die Anforderung gesendet hat. Host - DNS- (oder IP-) Hostname, an den die Anforderung gerichtet ist. Cookies - Cookies (Daten, die vom Server beim letzten Besuch dieses Hosts auf der lokalen Festplatte des Clients gespeichert wurden). Referer - der Host, von dem wir die Anfrage senden. Wenn wir uns beispielsweise auf der Seite http://narod.ru befinden , klicken wir dort auch auf den Link http://yandex.ru . Die Anfrage wird an den Host yandex.ru gesendet, das Feld für die Referer- Anfrage hat jedoch den Hostnamen narod.ru.

Der Satz von Abfrageparametern ist nicht festgelegt. Zusätzlich zu den obigen können auch andere Parameter vorhanden sein.

Die interessantesten Parameter sind Referer und Cookie . Diese Parameter werden hauptsächlich zur Benutzeridentifikation durch den Server verwendet.

Bei einer GET-Anforderung können vom Kunden Daten an den Server übertragen werden. Sie werden direkt über die URL mit dem CGI-Protokoll übertragen. Um beispielsweise in den Chat einzutreten, kann der Browser dem Server die folgende Anfrage senden:

GET http://chat.ru/ ? Login = Algol & pass = Algol HTTP / 1.0
Akzeptieren Sie: image / gif, image / x-xbitmap, image / jpeg, image / pjpeg, application / vnd.ms-excel, application / msword, application / vnd.ms-powerpoint, * / *
Akzeptieren-Sprache: ru
Cookie: yandexuid = 2464977781018373381
User-Agent: Mozilla / 4.0 (kompatibel; MSIE 5.5; Windows 98)
Gastgeber: yandex.ru
Referer: narod.ru
Proxy-Verbindung: Keep-Alive

Wie wir beobachten, enthält die Abfragezeichenfolge den Benutzernamen und das Kennwort des Benutzers, die über die URL-Zeichenfolge übergeben werden. Diese Art der Datenübertragung zum Server ist praktisch, hat jedoch Einschränkungen hinsichtlich der Kapazität. Extrem beeindruckende Datensätze können nicht über URLs weitergegeben werden. Für solche Zwecke gibt es eine andere Art von Anforderung: eine POST- Anforderung. Die POST- Anforderung ist der GET sehr ähnlich, mit dem einzigen Unterschied, dass die Daten in der POST- Anforderung getrennt vom Anforderungsheader selbst übertragen werden. Das obige Beispiel in der POST- Version hat also die Form:

POST http://chat.ru/ HTTP / 1.0
Akzeptieren Sie: image / gif, image / x-xbitmap, image / jpeg, image / pjpeg, application / vnd.ms-excel, application / msword, application / vnd.ms-powerpoint, * / *
Akzeptieren-Sprache: ru
Cookie: yandexuid = 2464977781018373381
User-Agent: Mozilla / 4.0 (kompatibel; MSIE 5.5; Windows 98)
Gastgeber: yandex.ru
Referer: narod.ru
Proxy-Verbindung: Keep-Alive

login = Algol & pass = Algol

Während wir die Anmeldeinformationen beobachten, wird auch das Passwort separat im Anfragetext übertragen. Der Anforderungshauptteil sollte von der leeren Zeichenfolge des Headers abfallen. Wenn der Server in einer POST- Anforderung auf eine leere Zeichenfolge stößt, berücksichtigt alles, was sich weiter bewegt, den Hauptteil der Anforderung (übertragene Daten). Beachten Sie Folgendes: Das Format der Daten im Hauptteil der POST- Anforderung ist beliebig. Trotz der Tatsache, dass das am häufigsten verwendete CGI-Format nicht erforderlich ist. Zusätzlich zur POST- Anforderung ist kein Anforderungshauptteil erforderlich, es können auch Daten auf ähnliche Weise über die URL übertragen werden.

Neben dem CGI-Format manchmal auch das sogenannte mehrteiliges Format:

POST http://photo.bigmir.net/form.php HTTP / 1.0
Akzeptieren Sie: image / gif, image / x-xbitmap, image / jpeg, image / pjpeg, application / vnd.ms-excel, application / msword, application / vnd.ms-powerpoint, * / *
Referer: http://photo.bigmir.net/form.php
Akzeptieren-Sprache: ru
Inhaltstyp: mehrteilig / Formulardaten; Grenze = --------------------------- 7d20345dc
Accept-Encoding: gzip, entleeren
User-Agent: Mozilla / 4.0 (kompatibel; MSIE 5.01; Windows 98)
Gastgeber: photo.bigmir.net
Proxy-Verbindung: Keep-Alive
Pragma: kein Cache
Cookie: Ukrainisch = 2; BSX_TestCookie = Ja; rich_ad = 1; b = 1

----------------------------- 7d20345dc
Inhaltsdisposition: Formulardaten; name = "id"

254353
----------------------------- 7d20345dc
Inhaltsdisposition: Formulardaten; name = "d"

22
----------------------------- 7d20345dc
Inhaltsdisposition: Formulardaten; name = "login"

Algol
----------------------------- 7d20345dc
Inhaltsdisposition: Formulardaten; name = "passw"

Algol
----------------------------- 7d20345dc
Inhaltsdisposition: Formulardaten; name = "email"

tps99@mail.ru
----------------------------- 7d20345dc
Inhaltsdisposition: Formulardaten; name = "submit"

Hinzufügen
----------------------------- 7d20345dc--

Kümmern wir uns um die Kopfzeile des Inhaltstyps: multipart / form-data; Grenze = --------------------------- 7d20345dc . Dieser Parameter teilt dem Server mit, dass der Kunde Daten im mehrteiligen Format mit einem Trennzeichen überträgt . --------------------------- 7d20345dc . Ein vom Kunden zufällig generierter Limiter ist ebenfalls erforderlich, damit der Server die verschiedenen im Anforderungshauptteil gesendeten Elemente trennen kann. Wie Sie sehen können, enthält der Hauptteil mehrere Elemente, die im ASCII- Format übertragen werden (und nicht in Unicode , wie es für CGI erforderlich ist), und die durch die im Parameter Content-Type angegebene Zeile getrennt sind. Jede Freigabe enthält Informationen über die Art der übertragenen Daten und den Namen dieses Teils. Der Komfort des mehrteiligen Formats besteht darin, dass die übertragenen Daten unbegrenzt sind und auch keine vorläufige Codierung erfordern.

Neben GET- Anforderungen gibt es auch POST- Anforderungen wie TRACE , PUT . Aber sie werden selten verwendet, und wir werden in keiner Weise darauf eingehen.

Ich werde noch einmal darauf aufmerksam machen, dass ALLE vom Kunden an den Server übertragenen Informationen im Header und im Hauptteil der Anfrage enthalten sind. Auf andere Weise kann der Server keine Informationen vom Kunden über das HTTP-Protokoll empfangen.

Andererseits kann der Server dem Kunden auch nur entgegen der Anfrage Informationen übermitteln. Ein Datenaustausch im HTTP-Protokoll wird nur vom Client initiiert, der Server kann jedoch "nur so" nichts übertragen, jedoch nur auf Anfrage des Clients.

Wenn wir also die Möglichkeit haben, übertragene Anforderungen zu steuern, steuern wir die vom Server und Client empfangenen Informationen vollständig. Dies ist praktisch, da für die Änderung der übertragenen / angeforderten Daten keinesfalls die HTML-Dateien der Seiten, auch die Cookies usw. geändert werden müssen. Sie müssen lediglich Änderungen an der HTTP-Anforderung vornehmen und diese auch an den Server senden. Dies ist jedoch eine andere Chronik :) :) ...