Senden von HTTP-Anfragen. Beitrag - Welche Methode wird verwendet, um eine HTTP-Anfrage in einem Formular und ohne Formular zu übertragen? xx: Clientfehler

Wir präsentieren Ihnen eine Beschreibung der Hauptaspekte des HTTP-Protokolls – eines Netzwerkprotokolls, das es Ihrem Browser von den frühen 90er Jahren bis heute ermöglichte, Webseiten zu laden. Dieser Artikel wurde für diejenigen geschrieben, die gerade erst anfangen, mit Computernetzwerken zu arbeiten und Netzwerkanwendungen zu entwickeln, und denen es immer noch schwerfällt, die offiziellen Spezifikationen alleine zu lesen.

HTTP- ein weit verbreitetes Datenübertragungsprotokoll, das ursprünglich für die Übertragung von Hypertextdokumenten gedacht war (d. h. Dokumente, die Links enthalten können, die die Navigation zu anderen Dokumenten ermöglichen).

Die Abkürzung HTTP steht für Hypertext Transfer Protocol, "Hypertext Transfer Protocol". Gemäß der OSI-Spezifikation ist HTTP ein Anwendungsprotokoll (obere, 7. Schicht). Die aktuelle Version des Protokolls, HTTP 1.1, ist in der RFC 2616-Spezifikation beschrieben.

Das HTTP-Protokoll beinhaltet die Verwendung einer Client-Server-Datenübertragungsstruktur. Die Clientanwendung generiert eine Anfrage und sendet sie an den Server. Anschließend verarbeitet die Serversoftware die Anfrage, generiert eine Antwort und sendet sie an den Client zurück. Die Client-Anwendung kann dann weiterhin andere Anfragen senden, die auf die gleiche Weise verarbeitet werden.

Eine Aufgabe, die traditionell mit dem HTTP-Protokoll gelöst wird, ist der Datenaustausch zwischen einer Benutzeranwendung, die auf Webressourcen zugreift (normalerweise ein Webbrowser) und einem Webserver. Derzeit ist es dem HTTP-Protokoll zu verdanken, dass das World Wide Web funktioniert.

HTTP wird auch häufig als Transportprotokoll für andere Protokolle der Anwendungsschicht wie SOAP, XML-RPC und WebDAV verwendet. In diesem Fall soll das HTTP-Protokoll als „Transport“ verwendet werden.

Die API vieler Softwareprodukte impliziert auch die Verwendung von HTTP für die Datenübertragung – die Daten selbst können in jedem beliebigen Format vorliegen, beispielsweise XML oder JSON.

Typischerweise erfolgt die HTTP-Datenübertragung über TCP/IP-Verbindungen. In diesem Fall verwendet die Serversoftware normalerweise den TCP-Port 80 (und wenn der Port nicht explizit angegeben ist, verwendet die Clientsoftware normalerweise standardmäßig Port 80 zum Öffnen von HTTP-Verbindungen), obwohl sie jeden anderen verwenden kann.

Wie sende ich eine HTTP-Anfrage?

Der einfachste Weg, das HTTP-Protokoll zu verstehen, besteht darin, manuell auf eine Webressource zuzugreifen. Stellen Sie sich vor, Sie sind ein Browser und haben einen Benutzer, der unbedingt Artikel von Anatoly Alizar lesen möchte.

Nehmen wir an, er hat Folgendes in die Adressleiste eingegeben:

Http://alizar.habrahabr.ru/

Dementsprechend müssen Sie als Webbrowser nun eine Verbindung zum Webserver unter alizar.habrahabr.ru herstellen.

Dazu können Sie jedes geeignete Befehlszeilenprogramm verwenden. Beispiel: Telnet:

Telnet alizar.habrahabr.ru 80

Lassen Sie mich gleich klarstellen: Wenn Sie Ihre Meinung plötzlich ändern, drücken Sie Strg + „]“ und geben Sie dann die Eingabetaste ein. Dadurch können Sie die HTTP-Verbindung schließen. Zusätzlich zu Telnet können Sie – je nach Geschmack – auch nc (oder ncat) ausprobieren.

Nachdem Sie eine Verbindung zum Server hergestellt haben, müssen Sie eine HTTP-Anfrage senden. Das ist übrigens ganz einfach – HTTP-Anfragen können aus nur zwei Zeilen bestehen.

Um eine HTTP-Anfrage zu generieren, müssen Sie eine Startzeile erstellen und außerdem mindestens einen Header festlegen – dies ist der Host-Header, der obligatorisch ist und in jeder Anfrage vorhanden sein muss. Tatsache ist, dass die Umwandlung eines Domänennamens in eine IP-Adresse auf der Clientseite erfolgt und dementsprechend beim Öffnen einer TCP-Verbindung der Remote-Server keine Informationen darüber hat, welche Adresse für die Verbindung verwendet wurde: Es könnte zum Beispiel die Adresse alizar.habrahabr.ru, habrahabr.ru oder m.habrahabr.ru sein – und in all diesen Fällen kann die Antwort unterschiedlich sein. Tatsächlich wird jedoch in allen Fällen die Netzwerkverbindung mit dem Knoten 212.24.43.44 geöffnet, und selbst wenn beim Öffnen der Verbindung zunächst nicht diese IP-Adresse, sondern ein Domänenname angegeben wurde, wird der Server darüber nicht informiert Wie auch immer - und deshalb muss diese Adresse im Host-Header übergeben werden.

Die anfängliche (anfängliche) Anforderungszeile für HTTP 1.1 setzt sich nach dem folgenden Schema zusammen:

Zum Beispiel (eine solche Startzeile kann darauf hinweisen, dass die Hauptseite der Website angefordert wird):

Und vergessen Sie natürlich nicht, dass jede Technologie viel einfacher und klarer wird, wenn Sie sie tatsächlich nutzen.

Viel Glück und fruchtbares Lernen!

Tags: Tags hinzufügen

Ab der zweiten Version 8 der Plattform haben Benutzer und Entwickler die Möglichkeit, http-Request direkt in 1C zu verwenden. Das Programm unterstützt zwei Arten von Abfragen:

  • POST-Anfragen;
  • GET-Anfragen.

Somit wurde ein recht komfortables Tool für den Datenaustausch und die Interaktion mit Webdiensten und über http betriebenen Diensten geschaffen.

GET-Anfrage

Natürlich veranschaulichen die einfachsten Beispiele für die Verwendung von Abfragen ihre Fähigkeiten viel besser als viele Beschreibungszeilen. Lass es uns versuchen:

  1. Lassen Sie uns den Hauptteil unserer Website abrufen.
  2. Wir werden daran arbeiten, die Anfrage umzuleiten.
  3. Machen wir das Bild von der Website.

Abrufen des Site-Textes

Beginnen wir mit etwas Einfachem. In Abb..

Das Ergebnis der Ausführung dieses Codeabschnitts ist ein ziemlich großer Text, dessen letzter Abschnitt in Abb. 2 dargestellt ist.

Abb.2

In der ersten Codezeile erstellen wir ein Verbindungsobjekt zur http-Ressource. Ein Objekt kann die folgenden Eigenschaften enthalten:

  • Server – Verbindungszeichenfolge, die die Serveradresse enthält;
  • Port – enthält eine Nummer, die den Server-Port angibt; standardmäßig können Sie je nach Verbindungstyp 80 für ungesicherte Verbindungen oder 443 für SSL-gesicherte Verbindungen angeben.
  • Benutzername – wird angezeigt, wenn eine Autorisierung auf dem Server erforderlich ist;
  • Passwort – Benutzerpasswort für die angegebene Ressource;
  • Proxy – kann ein Objekt vom Typ InternetProxy enthalten, das angezeigt wird, wenn ein Proxy für die Kommunikation mit dem Server verwendet wird;
  • Sichere Verbindung – der Standardwert ist FALSE, der Wechsel zu TRUE zeigt die Verwendung des https-Protokolls an.

Darüber hinaus verfügt das HTTPConnection-Objekt über eigene Methoden, deren Aufruf eine ausführlichere Beschreibung des Handler-Ausführungsalgorithmus ermöglicht:

  • CallHTTPmethod – enthält zwei erforderliche Parameter, HTTPmethod und HTTPrequest, unterstützt die Möglichkeit, den Antworttext in die im dritten Parameter angegebene Datei zu schreiben;
  • Schreiben – sendet Daten mithilfe einer PUT-Anfrage an den Server;
  • Ändern – ändert ein Objekt durch die Verarbeitung von PATCH-Anfragen;
  • SendForProcessing – eine Methode, die die Verwendung einer POST-Anfrage angibt, wie alle vorherigen Methoden, muss den Text der Anfrage enthalten und kann auch die Adresse der Antwortdatei zur Datenaufzeichnung übermitteln;
  • Empfangen – dies wird weiter unten ausführlicher besprochen;
  • GetHeadings ist eine weitere Methode, die im Artikel verwendet wird;
  • Beim Löschen handelt es sich eigentlich um eine Delite-Anfrage, die die in der Anfrage übergebene Ressource vom Server entfernt.

In der zweiten Zeile erstellen wir eine Anfrage an die ausgewählte Site. Der Text unserer Anfrage enthält einen Schrägstrich, was bedeutet, dass wir die Hauptseite erhalten möchten. Würde dem Schrägstrich ein beliebiger Ausdruck folgen, zum Beispiel „Seite2“ oder „Nachrichten“, würden wir eine andere Seite erhalten.

Die dritte Zeile führt unsere Anfrage an den Server aus.

Im vierten zeigen wir das Ergebnis.

Behandelt die Umleitung von HTTP-Anfragen

Stellen wir uns eine Situation vor, in der wir mithilfe der Taste „Abfragen in 1C“ programmgesteuert ein Suchergebnis über eine beliebige Suchmaschine erhalten müssen. Der für den Zugriff auf GOOGLE erforderliche Codeabschnitt ist in Abb. 3 dargestellt

Abb. 3

Hier gibt es zusätzlich zu den uns bereits bekannten Strukturen Header und Statuscode. Beschäftigen wir uns mit ihnen.

Statuscode – Standardwert, der in „Anfrage nach Kommentaren“ angegeben wird, kann die folgenden Werte annehmen:

  1. Wenn alles in Ordnung ist, wird der Wert im Bereich von 100 bis 299 zurückgegeben;
  2. Im Falle einer Umleitung wird ein Code im Bereich von 300 bis 399 zurückgegeben; in unserem Fall wird eine erfolgreiche dauerhafte Umleitung zu einer Ressource durch Code 301 bestimmt;
  3. Bei Fehlern in der Anfrage nimmt der Parameter einen Wert zwischen 400 und 499 an;
  4. Ein Wert im Bereich 500–599 weist auf Probleme mit dem Server hin.

Jede Seite hat einen Titel, in dessen Text mehrere Parameter unterschieden werden können (Abb. 4):

  1. Verbindungsdiagramm (alles, was vor zwei Schrägstrichen „//“ steht);
  2. Verbindungsadresszeile;
  3. Benutzername und Passwort;
  4. Port und Host, zu dem eine Verbindung hergestellt werden soll.

Diese Aufteilung wird von der SplitAddressLine-Funktion durchgeführt. Nachdem wir so eine neue Adresse erhalten haben, können wir die Seite auf unserem Computer speichern und im Standardbrowser öffnen (GetPage-Verfahren).

Abb.5

Es gibt keine neuen Funktionen oder Möglichkeiten, mit Anfragen zu arbeiten; wir erstellen tatsächlich ein Textdokument aus dem Hauptteil der Website und starten die Seite im Browser.

Wir legen die Datei im Stammverzeichnis von Laufwerk D ab und nennen sie test.

Wir nehmen das Bild von der Website

Es stellt sich natürlich die Frage: Wenn wir nicht die gesamte Website benötigen, sondern nur ihre einzelnen Elemente benötigen, kann dies dann erfolgen und wie? Ja, du kannst. Der Programmcode, der Ihnen dies ermöglicht, ist in Abb. 6 dargestellt

Abb.6

Wie Sie der Abbildung entnehmen können, befindet sich im Hauptteil der Anfrage der Code des Site-Strukturelements, das wir erhalten müssen. Dieser Teil war in unserer vorherigen Beschreibung nicht enthalten und wir müssen näher auf diesen Punkt eingehen.

Wir haben einen Browser verwendet Opera, um auf die Website zuzugreifen. Es verfügt über ein für uns wichtiges Tool: Wenn Sie mit der rechten Maustaste auf ein Element klicken, können Sie ein Kontextmenü aufrufen, darunter „Elementcode anzeigen“.

Ihm ist es zu verdanken, dass wir die Adresse erhalten können, die in der Anfrage verwendet wird (Abb. 7).

POST-Anfrage

Im Gegensatz zu einfachen Get-Anfragen verfügen POST-HTTP-Anfragen über einen Textkörper, der entweder im Klartext oder in Form von Dateien mit der Erweiterung xml, Soap, JSON gespeichert werden kann. Im Netzwerk gibt es eine ganze Reihe von Tools zum Erstellen von Anforderungstexten, mit denen Sie die Ausführung bestimmter Anforderungen debuggen und überwachen können.

Um in 1C eine Anfrage mit einem bestimmten Text zu starten, verfügt das HTTP-Anfrageobjekt über die SetBodyFromString-Prozedur.

In diesem Beitrag sollen die Prinzipien der Datenübertragung im Internet anhand zweier Hauptmethoden erläutert werden: GET und POST. Ich habe es als Ergänzung zur Anleitung zum Schichtplangenerator für diejenigen geschrieben, die sich wahrscheinlich nicht für die Details interessieren ☺.

Gehen Sie zur folgenden Adresse (dies dient zur visuellen Erläuterung): http://calendarin.net/calendar.php?year=2016. Achten Sie auf die Adressleiste des Browsers: Calendarin.net/calendar.php ?Jahr=2016 Die Hauptdatei wird benannt, gefolgt von einem Fragezeichen (?) und einem „Jahr“-Parameter mit dem Wert „2016“. Alles, was auf das Fragezeichen folgt, ist also eine GET-Anfrage. Es ist einfach. Um mehr als einen Parameter zu übergeben, müssen diese durch ein kaufmännisches Und-Zeichen (&) getrennt werden. Beispiel: Calendarin.net/calendar.php ?year=2016&display=work-days-and-days-off

Die Hauptdatei wird immer noch benannt, gefolgt von einem Fragezeichen (?), dann einem „Jahr“-Parameter mit dem Wert „2016“, dann einem kaufmännischen Und-Zeichen (&) und dann einem „Anzeige“-Parameter mit dem Wert „Arbeitstage-“ und-Tage“ -frei“.

GET-Parameter können direkt in der Adressleiste des Browsers geändert werden. Wenn Sie beispielsweise den Wert „2016“ in „2017“ ändern und die Taste drücken, gelangen Sie zum Kalender für 2017.

Hierbei handelt es sich um eine verdeckte Datenübertragung (die Seitenadresse ändert sich nicht); Das heißt, Sie können nur sehen, was mithilfe eines Programms (Skripts) übertragen wurde. Beispielsweise werden im folgenden Tool zum Zählen von Zeichen in Texten die Originaldaten mit der POST-Methode übertragen: http://usefulonlinetools.com/free/character-counter.php

Wenn Sie Fragen, Anmerkungen und meine E-Mail haben, stehen wir Ihnen gerne zur Verfügung.

Neben der GET-Methode, die wir im vorherigen Beitrag besprochen haben, gibt es eine weitere Methode zum Senden einer Anfrage über das HTTP-Protokoll – die POST-Methode. Auch die POST-Methode wird in der Praxis sehr häufig eingesetzt.

Wenn wir für die Kontaktaufnahme mit dem Server über die GET-Methode nur eine Anfrage in die URL eingeben mussten, funktioniert bei der POST-Methode alles nach einem anderen Prinzip.

Um diese Art von Anfrage auszuführen, müssen wir auf die Schaltfläche mit dem Attribut „type="submit" klicken, die sich auf der Webseite befindet. Bitte beachten Sie, dass sich dieser Button im Element befindet

, dessen Methodenattribut auf post gesetzt ist.

Betrachten Sie diesen HTML-Code:

Text eingeben:


Wenn der Benutzer Text in das Textfeld eingibt und auf die Schaltfläche „Senden“ klickt, wird die Textvariable mit dem Wert des vom Benutzer eingegebenen Inhalts an den Server gesendet.

POST- und GET-Anfragen in einfachen Worten

Diese Variable wird mit der POST-Methode gesendet.

Wenn Sie dies in das Formular schreiben:

Anschließend werden die Daten mit der GET-Methode gesendet.

Wenn bei einer GET-Anfrage die Datenmenge, die wir übertragen konnten, durch die Länge der Adressleiste des Browsers begrenzt war, gibt es bei einer POST-Anfrage keine solche Einschränkung und wir können erhebliche Mengen übertragen von Informationen.

Ein weiterer Unterschied zwischen der POST-Methode und der GET-Methode besteht darin, dass die POST-Methode alle von ihr übergebenen Variablen und deren Werte in ihrem Körper (Entity-Body) verbirgt. Bei der GET-Methode wurden sie im Request-String (Request-URI) gespeichert.

Hier ist ein Beispiel für eine Anfrage, die mit der POST-Methode gestellt wurde:

POST / HTTP/1.0\r\n
Host: www.site.ru\r\n
Referrer: http://www.site.ru/index.html\r\n
Cookie: Einkommen=1\r\n
Inhaltstyp: application/x-www-form-urlencoded\r\n
Inhaltslänge: 35\r\n
\r\n
login=Dima&password=12345

Durch die Übertragung von Daten mit der POST-Methode wird es für einen Angreifer daher viel schwieriger, diese abzufangen, weil Da sie nicht direkt sichtbar sind, gilt die POST-Methode zur Datenübertragung als sicherere Methode.

Darüber hinaus können Sie mit der POST-Methode nicht nur Text, sondern auch Multimediadaten (Bilder, Audio, Video) übertragen. Es gibt einen speziellen Parameter Content-Type, der die Art der zu übertragenden Informationen bestimmt.

Und schließlich wird die POST-Variable verwendet, um die Daten, die mit dieser Methode übertragen wurden, auf dem Server zu empfangen.

Hier ist ein Beispiel für die Verarbeitung in PHP:

echo $_POST['text'];
?>

Im letzten Beitrag haben wir entschieden, dass der Browser (Client) HTTP-Anfragen an den Server sendet und der Server HTTP-Antworten an den Client sendet. Diese Anfragen und Antworten werden nach bestimmten Regeln formatiert. Es gibt so etwas wie eine Syntax, wie und in welcher Reihenfolge sie geschrieben werden soll. Es muss eine streng definierte Struktur vorhanden sein.

Schauen wir uns diese Struktur, mit der Anfragen und Antworten im HTTP-Protokoll aufgebaut sind, genauer an.

Eine HTTP-Anfrage besteht aus drei Hauptteilen, die in der unten aufgeführten Reihenfolge erscheinen. Zwischen den Kopfzeilen und dem Nachrichtentext befindet sich eine Leerzeile (als Trennzeichen), sie stellt ein Zeilenvorschubzeichen dar.

Leere Zeichenfolge (Trennzeichen)

Post- und Get-Anfragen, was ist der Unterschied zwischen ihnen und was ist besser und für welche Zwecke?

Nachrichtentext (Entity Body) – optionaler Parameter

Abfragezeichenfolge– gibt die Übertragungsmethode, die URL, auf die zugegriffen werden soll, und die HTTP-Protokollversion an.

Überschriften– den Nachrichtentext beschreiben, verschiedene Parameter und andere Informationen und Informationen übermitteln.

Nachrichtentext- Dabei handelt es sich um die Daten selbst, die im Rahmen der Anfrage übermittelt werden. Der Nachrichtentext ist ein optionaler Parameter und fehlt möglicherweise.

Wenn wir eine Antwortanfrage vom Server erhalten, ist der Nachrichtentext meist der Inhalt der Webseite. Aber auch bei Anfragen an den Server kann es manchmal vorliegen, beispielsweise wenn wir die Daten, die wir im Feedback-Formular ausgefüllt haben, an den Server übertragen.

In den folgenden Anmerkungen werden wir uns jedes Element der Anfrage genauer ansehen.

Betrachten wir zum Beispiel eine echte Anfrage an den Server. Ich habe jeden Teil der Anfrage mit einer anderen Farbe hervorgehoben: Die Anfragezeile ist grün, die Kopfzeilen sind orange und der Nachrichtentext ist blau.

Browseranfrage:

Host: webgyry.info

Cookie: wp-Einstellungen

Verbindung: Keep-Alive

Im folgenden Beispiel ist der Nachrichtentext bereits vorhanden.

Serverantwort:

Inhaltstyp: text/html; Zeichensatz=UTF-8

Übertragungskodierung: Chunked

Verbindung: Keep-Alive

Keep-Alive: Timeout=5

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

Unbenanntes Dokument

Dies sind die Nachrichten, die zwischen Client und Server über HTTP ausgetauscht werden.

Möchten Sie übrigens mithilfe der „Ziele“ von Yandex Metrics und Google Analytics herausfinden, ob ein Element Ihrer Website einen Sinn hat?

Entfernen Sie, was nicht funktioniert, fügen Sie hinzu, was funktioniert, und verdoppeln Sie Ihren Umsatz.

Kurs zum Einrichten von Yandex Metrica-Zielen.

Kurs zum Einrichten von Google Analytics-Zielen.

Der HTTP-Client sendet eine Anfrage in Form einer Anfragenachricht an den Server, die das folgende Format hat:

  • Abfragezeichenfolge (erforderlich)
  • Überschrift (optionales Element)
  • Leere Zeichenfolge (erforderlich)
  • Nachrichtentext (optionales Element)

Schauen wir uns jedes dieser Elemente einzeln an.

Abfragezeichenfolge

Die Anforderungszeile beginnt mit einem Methodentoken, gefolgt vom Anforderungs-URI und der Protokollversion. Elemente werden durch Leerzeichen voneinander getrennt:

Schauen wir uns dieses Element genauer an.

Anfragemethode

Dieses Element gibt eine Methode an, die serverseitig unter dem angegebenen URI aufgerufen werden soll.

Es gibt acht Methoden in HTTP:

  • KOPF
    Wird verwendet, um den Status und die Header-Zeichenfolge vom Server per URI abzurufen. Ändert keine Daten.
  • ERHALTEN
    Wird verwendet, um Daten vom Server unter der angegebenen URI zu empfangen. Ändert keine Daten.
  • POST
    Wird verwendet, um Daten mithilfe von HTML-Formularen an den Server zu senden (z. B. Entwicklerinformationen usw.).
  • SETZEN
    Ersetzt alle vorherigen Daten auf der Ressource durch die neu geladenen Daten.
  • LÖSCHEN
    Löscht alle aktuellen Daten auf der durch den URI angegebenen Ressource.
  • VERBINDEN
    Stellt eine Tunnelverbindung zum Server unter der angegebenen URI her.
  • OPTIONEN
    Beschreibt die Verbindungseigenschaften für die angegebene Ressource.
  • VERFOLGEN
    Stellt eine Nachricht bereit, die eine Rückgabeverfolgung des Speicherorts der im URI angegebenen Ressource enthält.

URI anfordern

URI (Uniform Resource Identifier) ​​ist die Kennung der Ressource, an die die Anfrage gesendet wird. Das Folgende ist das am häufigsten verwendete URI-Format:

‘*’ Wird verwendet, wenn sich die HTTP-Anfrage nicht auf eine bestimmte Ressource, sondern auf den Server bezieht. Wird nur verwendet, wenn die Methode nicht auf eine Ressource angewendet werden muss. Zum Beispiel,

absoluteURI Wird verwendet, wenn eine HTTP-Anfrage an einen Proxy gestellt wird. Der Proxy wird gebeten, die Anfrage aus dem verfügbaren Cache weiterzuleiten und gibt eine Antwort zurück. Zum Beispiel:

absoluter_pfad | Quelle Meist genutzt.

Lernen, mit GET- und POST-Anfragen zu arbeiten

Es wird eine bestimmte Ressource auf einem bestimmten Server angefordert. Beispielsweise möchte ein Client über Port 80 eine Ressource von einem Server empfangen. Die Ressourcenadresse lautet „www.proselyte.net“ und sendet die folgende Anfrage:

Header-Felder abfragen

Header-Felder ermöglichen es dem Client, zusätzliche Informationen über die Anfrage und sich selbst an den Server zu übergeben. Diese Felder fungieren als Abfragemodifikatoren.

Nachfolgend finden Sie eine Liste der wichtigsten Header-Felder, die verwendet werden können:

  • Akzeptieren Sie den Zeichensatz
  • Akzeptieren-Kodierung
  • Akzeptieren-Sprache
  • Genehmigung
  • Erwarten
  • Wenn-Match
  • Wenn-geändert-seit
  • Wenn-Keine-Übereinstimmung
  • If-Bereich
  • Wenn-unverändert-seit
  • Reichweite
  • Referrer
  • User-Agent

Wenn wir unseren eigenen Client und unseren eigenen Webserver implementieren möchten, können wir unsere eigenen Header-Felder erstellen.

Beispiel für eine HTTP-Anfrage

Damit ist unsere Untersuchung von HTTP-Anfragen abgeschlossen.
Im nächsten Artikel werden wir uns mit HTTP-Antworten befassen.

Eine Möglichkeit, eine HTTP-Anfrage an einen Server zu senden, ist die GET-Methode. Diese Methode ist die gebräuchlichste und wird am häufigsten für Anfragen an den Server verwendet.

Der einfachste Weg, eine GET-Anfrage zu erstellen, besteht darin, die URL in die Adressleiste Ihres Browsers einzugeben.

Der Browser sendet dem Server ungefähr die folgenden Informationen:

GET / HTTP/1.1
Host: webgyry.info
Benutzeragent: Mozilla/5.0 (Windows NT 6.1; rv:18.0) Gecko/20100101 Firefox/18.0
Akzeptieren: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Akzeptierte Sprache: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Akzeptierte Kodierung: gzip, deflate
Cookie: wp-Einstellungen
Verbindung: Keep-Alive

Die Anfrage besteht aus zwei Teilen:

1. Anforderungszeile

2. Nachrichtenkopfzeilen

Beachten Sie, dass eine GET-Anfrage keinen Nachrichtentext hat. Dies bedeutet jedoch nicht, dass wir mit seiner Hilfe keine Informationen an den Server übermitteln können.

Unterschied zwischen GET- und POST-Methoden

Dies kann über spezielle GET-Parameter erfolgen.

Um einer Anfrage GET-Parameter hinzuzufügen, müssen Sie am Ende der URL ein „?“ hinzufügen. und beginnen Sie danach, sie gemäß der folgenden Regel zu fragen:

Parametername1=Parameterwert1& Parametername2=Parameterwert2&…

Das Trennzeichen zwischen Parametern ist das „&“-Zeichen.

Wenn wir beispielsweise zwei Werte an den Server übergeben möchten, den Benutzernamen und sein Alter, dann kann dies mit der folgenden Zeile erfolgen:

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

Bei der Ausführung dieser Anfrage landen die Daten in der sogenannten Umgebungsvariablen QUERY_STRING, aus der sie mit einer serverseitigen Webprogrammiersprache auf dem Server abgerufen werden können.

Hier ist ein Beispiel, wie dies in PHP erfolgen kann.

echo "Ihr Name: " . $_GET["name"] . "
»;
echo „Dein Alter:“ . $_GET["Alter"] . "
»;
?>

Mit der Konstruktion $_GET[„parameter_name“] können Sie den Wert des übergebenen Parameters anzeigen.

Als Ergebnis der Ausführung dieses Codes im Browser wird Folgendes angezeigt:

Dein Name: Dima
Dein Alter: 27

Wir stellen auch eine Anfrage an den Server mit der GET-Methode.

Egal, ob Sie Programmierer sind oder nicht, Sie haben es überall im Internet gesehen. Derzeit zeigt die Adressleiste des Browsers etwas an, das mit „http://“ beginnt. Sogar Ihr erstes Hello World-Skript hat ohne Ihr Verständnis einen HTTP-Header gesendet. In diesem Artikel lernen wir die Grundlagen von HTTP-Headern und deren Verwendung in unseren Webanwendungen kennen.

Was sind HTTP-Header?

HTTP steht für Hypertext Transfer Protocol. Das World Wide Web verwendet dieses Protokoll. Es wurde Anfang der 1990er Jahre erstellt. Fast alles, was Sie in Ihrem Browser sehen, wird über HTTP auf Ihren Computer übertragen. Als Sie beispielsweise die Seite für diesen Artikel geöffnet haben, hat Ihr Browser über 40 HTTP-Anfragen gesendet und für jede davon HTTP-Antworten erhalten.

HTTP-Header sind der Hauptbestandteil dieser HTTP-Anfragen und -Antworten und enthalten Informationen über den Browser des Clients, die angeforderte Seite, den Server und mehr.

Beispiel

Wenn Sie eine URL in die Adressleiste eingeben, sendet Ihr Browser eine HTTP-Anfrage, die möglicherweise so aussieht:

GET /tutorials/other/top-20-mysql-best-practices/ HTTP/1.1 Host: net.tutsplus.com User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9. 1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729) Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en -us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Verbindung: Keep-Alive Cookie: PHPSESSID=r2t5uvjq435r4q7ib3vtdjq120 Pragma: kein Cache Cache-Steuerung: kein Cache

Die erste Zeile ist die „Anfragezeile“, die einige grundlegende Informationen zur Anfrage enthält. Der Rest sind HTTP-Header.

Nach dieser Anfrage erhält Ihr Browser eine HTTP-Antwort, die wie folgt aussehen könnte:

HTTP/1.x 200 OK Übertragungskodierung: Chunked Datum: Samstag, 28. November 2009 04:36:25 GMT Server: LiteSpeed ​​​​Verbindung: schließen X-Powered-By: W3 Gesamtcache/0,8 Pragma: öffentlich Läuft ab: Samstag , 28. November 2009 05:36:25 GMT Etag: „pub1259380237;gz“ Cache-Steuerung: max-age=3600, öffentlicher Inhaltstyp: text/html; charset=UTF-8 Letzte Änderung: Sa, 28. Nov. 2009 03:50:37 GMT User-Agent Die über 20 besten MySQL-Best Practices – Nettuts+

Die erste Zeile ist die „Statuszeile“, gefolgt von den „HTTP-Headern“ bis zur leeren Zeile. Danach beginnt der „Inhalt“ (in diesem Fall die HTML-Ausgabe).

Wenn Sie sich den Quellcode einer Webseite im Browser ansehen, sehen Sie nur einen Teil des HTML und nicht die HTTP-Header, obwohl diese tatsächlich mitgesendet wurden.

Diese HTTP-Anfragen werden auch für andere Dinge wie Bilder, CSS-Dateien, JavaScript-Dateien usw. gesendet und empfangen. Deshalb habe ich vorhin gesagt, dass Ihr Browser mindestens 40 oder mehr HTTP-Anfragen gesendet hat, seit Sie diese Artikelseite erst heruntergeladen haben.

Schauen wir uns nun die Struktur genauer an.

So sehen Sie HTTP-Header

Ich verwende die folgenden Firefox-Erweiterungen, um HTTP-Header zu analysieren:

HTTP-Header in HTTP-Anfragen

Wir werden uns nun einige der häufigsten HTTP-Header ansehen, die in HTTP-Anfragen vorkommen.

Fast alle dieser Header sind im Array $_SERVER in PHP zu finden. Sie können auch die Funktion getallheaders() verwenden, um alle Header auf einmal abzurufen.

Gastgeber

Die HTTP-Anfrage wird an bestimmte IP-Adressen gesendet. Da die meisten Server jedoch in der Lage sind, mehrere Websites unter einer IP zu hosten, müssen sie wissen, nach welchem ​​Domainnamen der Browser sucht.

Host: net.tutsplus.com

Dies ist im Grunde der Hostname, einschließlich der Domäne und Subdomäne.

In PHP kann es als $_SERVER["HTTP_HOST"] oder $_SERVER["SERVER_NAME"] gefunden werden.

User-Agent

Benutzeragent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)

Dieser Header kann mehrere Informationen enthalten, wie zum Beispiel:

  • Browsername und -version.
  • Name und Version des Betriebssystems.
  • Standardsprache.

Auf diese Weise können Websites bestimmte allgemeine Informationen über die Systeme ihrer Surfer sammeln. Sie können beispielsweise erkennen, ob ein Surfer einen mobilen Browser verwendet, und ihn auf die mobile Version ihrer Website umleiten, die bei einer niedrigeren Auflösung besser funktioniert.

In PHP kann es so ausgedrückt werden: $_SERVER["HTTP_USER_AGENT"].

If (strstr($_SERVER["HTTP_USER_AGENT"],"MSIE 6")) ( echo "Bitte beenden Sie die Verwendung von IE6!"; )

Akzeptieren-Sprache

Akzeptierte Sprache: en-us,en;q=0.5

In dieser Kopfzeile werden die Standardspracheinstellungen angezeigt. Wenn eine Website über verschiedene Sprachversionen verfügt, kann sie anhand dieser Daten einen neuen Surfer weiterleiten.

In PHP kann es so gefunden werden: $_SERVER["HTTP_ACCEPT_LANGUAGE"].

If (substr($_SERVER["HTTP_ACCEPT_LANGUAGE"], 0, 2) == "fr") ( header("Location: http://french.mydomain.com"); )

Akzeptieren-Kodierung

Akzeptierte Kodierung: gzip, deflate

Die meisten modernen Browser unterstützen gzip und senden dies im Header. Der Webserver kann dann den ausgegebenen HTML-Code in einem komprimierten Format senden. Dadurch wird die Größe um bis zu 80 % reduziert, um Bandbreite und Zeit zu sparen.

In PHP kann es so gefunden werden: $_SERVER["HTTP_ACCEPT_ENCODING"]. Wenn Sie jedoch die Rückruffunktion ob_gzhandler() verwenden, überprüft diese den Wert automatisch, sodass Sie dies nicht tun müssen.

// aktiviert die Ausgabepufferung // und alle Ausgaben werden komprimiert, wenn der Browser dies unterstützt ob_start("ob_gzhandler");

Wenn-geändert-seit

Wenn ein Webdokument bereits in Ihrem Browser zwischengespeichert ist und Sie es erneut besuchen, kann Ihr Browser überprüfen, ob das Dokument aktualisiert wurde, indem er Folgendes sendet:

Wenn sich der Inhalt seit diesem Datum nicht geändert hat, sendet der Server den Antwortcode „304 Not Modified“, der Inhalt jedoch nicht, und der Browser lädt den Inhalt aus dem Cache.

In PHP kann es so gefunden werden: $_SERVER["HTTP_IF_MODIFIED_SINCE"].

// Angenommen, $last_modify_time war das letzte Mal, dass die Ausgabe aktualisiert wurde. // Hat der Browser den If-Modified-Since-Header gesendet? if(isset($_SERVER["HTTP_IF_MODIFIED_SINCE"])) ( // wenn der Browser-Cache mit der Änderungszeit übereinstimmt if ($last_modify_time == strtotime($_SERVER["HTTP_IF_MODIFIED_SINCE"])) ( // einen 304-Header senden und kein Inhaltsheader("HTTP/1.1 304 Not Modified"); Exit; ) )

Es gibt auch einen Etag-HTTP-Header, mit dem der aktuelle Cache überprüft werden kann. Wir werden in Kürze darüber sprechen.

Plätzchen

Wie der Name schon sagt, werden dadurch Cookies gesendet, die in Ihrem Browser für diese Domain gespeichert sind.

Cookie: PHPSESSID=r2t5uvjq435r4q7ib3vtdjq120; foo=bar

Dabei handelt es sich um Name=Wert-Paare, die durch Semikolons getrennt sind. Cookies können auch eine Sitzungs-ID enthalten.

In PHP kann über das Array $_COOKIE auf einzelne Cookies zugegriffen werden. Sie können über das Array $_SESSION direkt auf Sitzungsvariablen zugreifen. Wenn Sie die Sitzungs-ID benötigen, können Sie anstelle eines Cookies die Funktion session_id() verwenden.

Echo $_COOKIE["foo"]; // Ausgabe: bar echo $_COOKIE["PHPSESSID"]; // Ausgabe: r2t5uvjq435r4q7ib3vtdjq120 session_start(); echo session_id(); // Ausgabe: r2t5uvjq435r4q7ib3vtdjq120

Referrer

Wie der Name schon sagt, enthält dieser HTTP-Header eine Referenz-URL.

Wenn ich zum Beispiel die Nettuts+-Homepage aufrufe und auf einen Artikellink klicke, wird dieser Header an meinen Browser gesendet:

Referrer: http://net.tutsplus.com/

In PHP ist es als $_SERVER["HTTP_REFERER"] zu finden.

If (isset($_SERVER["HTTP_REFERER"])) ( $url_info = parse_url($_SERVER["HTTP_REFERER"]); // kommt der Surfer von Google? if ($url_info["host"] == "www .google.com") ( parse_str($url_info["query"], $vars); echo "Sie haben bei Google nach diesem Schlüsselwort gesucht: ". $vars["q"]; ) ) // wenn die verweisende URL war : // http://www.google.com/search?source=ig&hl=en&rlz=&=&q=http+headers&aq=f&oq=&aqi=g-p1g9 // Die Ausgabe lautet: // Sie haben bei Google gesucht nach dieses Schlüsselwort: http-Header

Möglicherweise ist Ihnen aufgefallen, dass das Wort „Referrer“ falsch als „Referer“ geschrieben wird. Leider wurde es auf ähnliche Weise zur offiziellen HTTP-Spezifikation und blieb hängen.

Genehmigung

Autorisierung: Basic bXl1c2VyOm15cGFzcw==

Die Daten im Header sind Base64-codiert. Beispielsweise gibt base64_decode("bXl1c2VyOm15cGFzcw ==") „myuser: mypass“ zurück.

In PHP sind diese Werte als $_SERVER["PHP_AUTH_USER"] und $_SERVER["PHP_AUTH_PW"] zu finden.

Mehr dazu, wenn wir über den WWW-Authenticate-Header sprechen.

HTTP-Header in HTTP-Antworten

Wir werden uns nun einige der häufigsten HTTP-Header ansehen, die in HTTP-Antworten vorkommen.

In PHP können Sie Antwortheader mit der Funktion header() festlegen. PHP sendet bestimmte Header bereits automatisch, um Inhalte zu laden und Cookies usw. zu setzen. Sie können die Header sehen, die gesendet werden oder gesendet werden, indem Sie die Funktion headers_list() verwenden. Mit der Funktion headers_sent() können Sie überprüfen, ob bereits Header gesendet wurden.

Cache-Kontrolle

Definition von w3.org: „Das Cache-Control-Header-Feld wird verwendet, um Anweisungen anzugeben, die von allen Caching-Mechanismen entlang der Anforderungs-/Antwortkette befolgt werden MÜSSEN.“ Zu diesen „Caching-Mechanismen“ gehören Gateways und Proxys, die Ihr ISP möglicherweise verwendet.

Cache-Kontrolle: max-age=3600, öffentlich

„Öffentlich“ bedeutet, dass die Antwort von jedem zwischengespeichert werden kann. „max-age“ gibt an, wie viele Sekunden der Cache gültig ist. Wenn Sie Ihrer Website erlauben, den Cache zu speichern, können Sie die Serverlast und Bandbreite reduzieren und die Ladezeiten des Browsers verbessern.

Caching kann auch mit der „no-cache“-Direktive verhindert werden.

Cache-Kontrolle: kein Cache

Inhaltstyp

Dieser Header gibt den „Mime-Typ“ des Dokuments an. Der Browser bestimmt dann auf dieser Grundlage, wie er den Inhalt interpretiert. Beispielsweise könnte eine HTML-Seite (oder ein PHP-Skript mit HTML-Ausgabe) Folgendes zurückgeben:

Inhaltstyp: text/html; Zeichensatz=UTF-8

„text“ ist der Typ und „html“ ist der Dokumentuntertyp. Der Header kann auch weitere Informationen wie den Zeichensatz enthalten.

Für ein GIF-Bild kann dieses gesendet werden.

Inhaltstyp: Bild/GIF

Der Browser kann eine externe Anwendung oder Browsererweiterung basierend auf dem Mime-Typ verwenden. Dadurch wird beispielsweise Adobe Reader geladen:

Inhaltstyp: application/pdf

Beim direkten Laden kann Apache normalerweise den MIME-Typ des Dokuments erkennen und den entsprechenden Header senden. Darüber hinaus verfügen die meisten Browser über ein gewisses Maß an Fehlertoleranz und erkennen Mime-Typen automatisch, wenn Header falsch sind oder fehlen.

Hier finden Sie eine Liste gängiger Mime-Typen.

In PHP können Sie die Funktion finfo_file() verwenden, um den MIME-Typ einer Datei zu bestimmen.

Inhaltliche Disposition

Dieser Header weist den Browser an, ein Datei-Download-Fenster zu öffnen, anstatt zu versuchen, den Inhalt zu analysieren. Beispiel:

Inhaltliche Disposition: Anhang; Dateiname="download.zip"

Dadurch wird der Browser dazu gezwungen:

Beachten Sie, dass auch der entsprechende Content-Type-Header mitgesendet werden muss:

Inhaltstyp: application/zip Inhaltsdisposition: Anhang; Dateiname="download.zip"

Inhaltslänge

Wenn der Inhalt dem Browser bereitgestellt wird, kann der Server mithilfe dieses Headers seine Größe (in Bytes) angeben.

Inhaltslänge: 89123

Dies ist besonders beim Herunterladen von Dateien nützlich. So kann der Browser den Fortschritt des Downloads ermitteln.

Hier ist zum Beispiel ein von mir geschriebenes Scheinskript, das ein langsames Laden simuliert.

// es ist ein ZIP-Datei-Header („Content-Type: application/zip“); // 1 Million Bytes (ca. 1 Megabyte) Header („Content-Length: 1000000“); // einen Download-Dialog laden und speichern as download.zip header("Content-Disposition: attachment; filename="download.zip""); // 1000 mal 1000 Bytes Daten für ($i = 0; $i< 1000; $i++) { echo str_repeat(".",1000); // sleep to slow down the download usleep(50000); }

Hier ist das Ergebnis:

Jetzt werde ich den Content-Length-Header auskommentieren

// es ist ein ZIP-Datei-Header("Content-Type: application/zip"); // der Browser kennt die Größe nicht // header("Content-Length: 1000000"); // Laden Sie einen Download-Dialog und speichern Sie ihn als download.zip header("Content-Disposition: attachment; filename="download.zip""); // 1000 mal 1000 Byte Daten für ($i = 0; $i< 1000; $i++) { echo str_repeat(".",1000); // sleep to slow down the download usleep(50000); }

Das Ergebnis sieht nun so aus:

Der Browser kann nur erkennen, wie viele Bytes heruntergeladen wurden, er kennt jedoch nicht die Gesamtmenge. Und der Fortschrittsbalken zeigt keinen Fortschritt an.

Etag

Dies ist ein weiterer Header, der zum Caching verwendet wird. Es sieht aus wie das:

Etag: „pub1259380237;gz“

Der Webserver kann diesen Header mit jedem von ihm bereitgestellten Dokument senden. Der Wert kann auf dem Datum der letzten Änderung, der Dateigröße oder sogar einer Dateiprüfsumme basieren. Der Browser speichert diesen Wert dann, während er das Dokument zwischenspeichert. Wenn der Browser das nächste Mal dieselbe Datei anfordert, sendet er diese in einer HTTP-Anfrage:

If-None-Match: „pub1259380237;gz“

Wenn der Etag-Wert des Dokuments mit diesem übereinstimmt, sendet der Server 304 statt 200 und keinen Inhalt. Der Browser lädt Inhalte aus seinem Cache.

Zuletzt bearbeitet

Wie der Name schon sagt, gibt dieser Header das Datum an, an dem das Dokument zuletzt im GMT-Format geändert wurde:

Zuletzt geändert: Sa, 28. Nov. 2009 03:50:37 GMT $modify_time = filemtime($file); header("Zuletzt geändert: " . gmdate("D, d M Y H:i:s", $modify_time) . " GMT");

Dies bietet dem Browser eine weitere Möglichkeit, das Dokument zwischenzuspeichern. Der Browser kann dies in einer HTTP-Anfrage senden:

Darüber haben wir bereits im Abschnitt „If-Modified-Since“ gesprochen.

Standort

Dieser Header wird zur Umleitung verwendet. Wenn der Antwortcode 301 oder 302 ist, muss der Server auch diesen Header senden. Wenn Sie beispielsweise http://www.nettuts.com aufrufen, empfängt Ihr Browser Folgendes:

HTTP/1.x 301 dauerhaft verschoben ... Standort: http://net.tutsplus.com/ ...

In PHP können Sie Surfer wie folgt umleiten:

Header("Standort: http://net.tutsplus.com/");

Standardmäßig wird der Antwortcode 302 gesendet. Wenn Sie statt 301 senden möchten:

Header("Standort: http://net.tutsplus.com/", true, 301);

Set-Cookie

Wenn eine Website ein Cookie in Ihrem Browser setzen oder aktualisieren möchte, verwendet sie diesen Header.

Set-Cookie: skin=noskin; path=/; domain=.amazon.com; läuft ab=Sonntag, 29.11.2009 21:42:28 GMT Set-Cookie: session-id=120-7333518-8165026; path=/; domain=.amazon.com; läuft ab=Sa. 27. Februar 08:00:00 2010 GMT

Jedes Cookie wird als separater Header gesendet. Bitte beachten Sie, dass mit JavaScript gesetzte Cookies keine HTTP-Header durchlaufen.

In PHP können Sie Cookies mit der Funktion setcookie() setzen und PHP sendet die entsprechenden HTTP-Header.

Setcookie("TestCookie", "foobar");

Was bewirkt, dass dieser Header gesendet wird:

Set-Cookie: TestCookie=foobar

Wenn kein Ablaufdatum angegeben ist, wird das Cookie gelöscht, wenn das Browserfenster geschlossen wird.

WWW-Authentifizieren

Die Site kann diesen Header senden, um den Benutzer über HTTP zu authentifizieren. Wenn der Browser diesen Header sieht, öffnet er einen Anmeldedialog.

WWW-Authenticate: Basic realm="Restricted Area"

So wird es aussehen:

Wie wir im vorherigen Beitrag besprochen haben, gibt es eine andere Methode zum Senden einer Anfrage mithilfe des HTTP-Protokolls – die POST-Methode. Auch die POST-Methode wird in der Praxis sehr häufig eingesetzt.

Wenn wir für die Kontaktaufnahme mit dem Server über die GET-Methode nur eine Anfrage in die URL eingeben mussten, funktioniert bei der POST-Methode alles nach einem anderen Prinzip.

Um diese Art von Anfrage auszuführen, müssen wir auf die Schaltfläche mit dem Attribut „type="submit" klicken, die sich auf der Webseite befindet. Bitte beachten Sie, dass sich dieser Button im Element befindet , dessen Methodenattribut auf post gesetzt ist.

Betrachten Sie diesen HTML-Code:

Text eingeben:


Wenn der Benutzer Text in das Textfeld eingibt und auf die Schaltfläche „Senden“ klickt, wird die Textvariable mit dem Wert des vom Benutzer eingegebenen Inhalts an den Server gesendet. Diese Variable wird mit der POST-Methode gesendet.

Wenn Sie dies in das Formular schreiben:

Anschließend werden die Daten mit der GET-Methode gesendet.

Wenn bei einer GET-Anfrage die Datenmenge, die wir übertragen konnten, durch die Länge der Adressleiste des Browsers begrenzt war, gibt es bei einer POST-Anfrage keine solche Einschränkung und wir können erhebliche Mengen übertragen von Informationen.

Ein weiterer Unterschied zwischen der POST-Methode und der GET-Methode besteht darin, dass die POST-Methode alle von ihr übergebenen Variablen und deren Werte in ihrem Körper (Entity-Body) verbirgt. Bei der GET-Methode wurden sie im Request-String (Request-URI) gespeichert.

Hier ist ein Beispiel für eine Anfrage, die mit der POST-Methode gestellt wurde:

POST / HTTP/1.0\r\n
Host: www.site.ru\r\n
Referrer: http://www.site.ru/index.html\r\n
Cookie: Einkommen=1\r\n
Inhaltstyp: application/x-www-form-urlencoded\r\n
Inhaltslänge: 35\r\n
\r\n
login=Dima&password=12345

Durch die Übertragung von Daten mit der POST-Methode wird es für einen Angreifer daher viel schwieriger, diese abzufangen, weil Da sie nicht direkt sichtbar sind, gilt die POST-Methode zur Datenübertragung als sicherere Methode.

Darüber hinaus können Sie mit der POST-Methode nicht nur Text, sondern auch Multimediadaten (Bilder, Audio, Video) übertragen. Es gibt einen speziellen Parameter Content-Type, der die Art der zu übertragenden Informationen bestimmt.

Und schließlich wird die POST-Variable verwendet, um die Daten, die mit dieser Methode übertragen wurden, auf dem Server zu empfangen.

Hier ist ein Beispiel für die Verarbeitung in PHP:

echo $_POST['text'];
?>

Übrigens richte ich Berichte, Ziele und Ereignisse in den Systemen Yandex Metrica und Google Analytics ein.

gastroguru 2017