


Einführung und vertieftes Verständnis des HTTP-Protokolls
Fasst mein Verständnis einiger Inhalte im Zusammenhang mit dem HTTP-Protokoll zusammen, auf die ich in tatsächlichen Arbeitsszenarien gestoßen bin.
Anfrage & Antwort
Anfrageformat
[
Antwortformat
[ Statuscode Es werden fast 60 HTTP-Statuscodes aufgezeichnet, die hauptsächlich generiert werden Unter ungewöhnlichen Umständen werden wir mehr oder weniger in täglichen Anwendungen darauf stoßen, was uns hilft, Probleme zu verstehen und zu entdecken. 206 – Wird beim Herunterladen mit Haltepunkten verwendet. Der Client hat einen Teil des Inhalts angefordert und der Server hat diesen Teil des Inhalts erfolgreich zurückgegeben. 301 – Permanenter Sprung, die ursprüngliche Adresse existiert nicht mehr und die URL verweist auf eine andere Adresse. Dies hängt vor allem mit Suchmaschinen zusammen und beeinflusst das Abrufverhalten von Crawlern. 302 – Temporärer Sprung, der Server gibt eine neue URL an den Client zurück und der Client kann weiterhin auf diese URL zugreifen, um Inhalte abzurufen. 304 – Die Ressource hat sich nicht geändert. Der Client kann lokal zwischengespeicherte Inhalte verwenden, was beim Zugriff auf statische Inhalte üblich ist. 413 – Die Anforderungsentität ist zu groß. Eine häufige Situation besteht darin, eine große Datei hochzuladen, diese überschreitet jedoch das Serverlimit (z. B. Nginx). Oder der Anforderungsheader oder Anforderungstext überschreitet die Einstellungen des Back-End-Servers (z. B. Tomcat) (z. B. sind zu viele Cookies unter dem aktuellen Domänennamen vorhanden, wodurch das Anforderungsheader-Limit überschritten wird) 416 - im Zusammenhang mit der Wiederaufnahme des Haltepunkts, Clientanforderung Der Bereich überschreitet die Dateigröße auf dem Server. 500 – Interner Serverfehler, normale Ergebnisse können nicht zurückgegeben werden. Die häufigste Anwendung löst beispielsweise eine Nullzeigerausnahme aus, die nicht behandelt wird. 502 – Gateway-Fehler. Eine häufige Situation besteht darin, dass der Reverse-Proxy-Backend-Server (z. B. Resin oder Tomcat) nicht gestartet ist. 503 – Dienst nicht verfügbar. Beispielsweise ist die Serverauslastung zu hoch oder der Server hat die Bereitstellung eingestellt. 504 – Gateway-Timeout. Beispielsweise überschreitet die Anforderungsdauer das Antwortzeitlimit des Servers. Header HTTP-Header sind in zwei Kategorien unterteilt: Request-Header und Response-Header. Im Folgenden sind einige Header aufgeführt, die wir häufig verwenden. 1. Cache-Kontrolle In Internet-Website-Anwendungen gibt es fast überall Caches. In http-basierten Diensten können wir auch einige Inhalte steuern, die dies nicht tun Häufige Änderungen werden auf der Clientseite zwischengespeichert, sodass der zwischengespeicherte Inhalt bei mehreren Besuchen wiederverwendet werden kann, was den Zugriff beschleunigt und die Benutzererfahrung verbessert. Das http-Protokoll legt einige http-Header für die Cache-Steuerung fest: Cache-Control(HTTP/1.1)/Pragma(HTTP/1.0): Gibt an, ob der Client zwischenspeichert und wie lange die Cache-Zeit beträgt. Der Standardwert ist privat, was bedeutet, dass der Inhalt im privaten Bereich des Benutzers zwischengespeichert wird. Beispiel: Cache-Control: max-age=86400, Must-Revalidate, dies teilt dem Client mit, dass die angeforderte Ressource einen Tag lang zwischengespeichert wird (Max-Age-Einheit ist Sekunden, relative Zeit) und nach Ablauf erneut überprüft werden muss. Läuft ab: Geben Sie an, wie lange der Client (wenn keine erzwungene Aktualisierung erforderlich ist) den lokalen Cache direkt lesen kann, ohne eine Anfrage an den Server zu senden. Hinweis: Priorität: Cache-Kontrolle > Läuft ab; Detaillierte Parameterbeschreibung: http://condor.depaul.edu/dmumaugh/readings/handouts/ SE435 /HTTP/node24.html Das unterschiedliche Verhalten verschiedener Browser (Aktualisieren, Zurück, Eingabe in die Adressleiste usw.) kann Unterschiede in der Implementierung haben Last-Modified/If- Modified -Since: Last-Modified ist der letzte geänderte Zeitstempel der Ressource, der vom Server an den Client zurückgegeben wird. Auf diese Weise bringt der Client den Parameter If-Modified-Since mit, um zu überprüfen, ob die Ressource bei der nächsten Anforderung aktualisiert wurde (z. B. erzwungene Aktualisierung). Nein. Bei einer Aktualisierung gibt der Server den Statuscode 304 zurück und der Client greift direkt auf die lokal zwischengespeicherten Ressourcen zu. Zu diesem Zeitpunkt gibt es nur einen Anforderungs-Overhead und keinen Netzwerkübertragungs-Overhead. Hinweis: Der Zeitstempel muss Greenwich Mean Time (GMT) sein, zum Beispiel: Last-Modified:Sat, 19 Oct 2013 09:20:15 GMT ETag/If-None-Match: ETag basiert auf der Datei Attribute Die durch einen bestimmten Algorithmus generierte Ressourcenkennung wird auch verwendet, um zu bestimmen, ob die vom Client angeforderte Ressource aktualisiert wurde. Wenn der Server einen ETag-Wert an den Client zurückgibt, bringt er bei der nächsten Anforderung des Clients den Parameter If-None-Match mit, um zu überprüfen, ob die Ressource aktualisiert wird. Wenn sie nicht aktualisiert wird, wird ein 304-Statuscode zurückgegeben . (Der Effekt ist im Grunde derselbe wie bei Last-Modified) Hinweis: ETag muss berechnet werden, was für Server mit knappen Rechenressourcen einen Verbrauch darstellt, sodass einige Websites ETag nicht verwenden direkt; Wenn sich der Server hinter einem Load Balancer befindet, können Anfragen für dieselbe Ressource auf verschiedene Backend-Maschinen verteilt werden. Da die Berechnung von ETag von Dateiattributen abhängt, können Dateien mit demselben Inhalt auf verschiedenen Maschinen unterschiedliche ETags generieren Die ETag-Überprüfung für Dateien, deren ursprünglicher Inhalt sich nicht geändert hat, konnte nicht bestanden werden. Hier gibt es zwei Lösungen: Eine besteht darin, dass die Etag-Berechnung nicht vom lokalen Computer abhängt, z. B. die direkte Berechnung des MD5-Werts des Dateiinhalts. Die andere besteht darin, beim Laden dieselbe URL-Anfrage an denselben Back-End-Computer zu verteilen Balancer. In unserem tatsächlichen Geschäftsszenario hat HTTP-Caching großartige Verwendungsmöglichkeiten: Nutzen Sie die Ressourcen des Clients vollständig aus, z. B. einige statische Dateien, auf die der Client häufig zugreifen muss B. LOGO, Werbebilder etc., können lokal auf dem Client zwischengespeichert werden. Dies kann Netzwerkanfragen reduzieren, die Client-Anzeige beschleunigen und den Druck auf Serveranfragen verringern. Wenn einige unserer statischen Inhalte, wie Nachrichten, Blogs usw., von Suchmaschinen-Crawlern gecrawlt werden, können wir durch die Steuerung der Cache-Parameter die Crawling-Frequenz des Crawlers reduzieren und unnötige Ressourcenverschwendung reduzieren. Wenn unsere statischen Ressourcen CDN verwenden, kann durch die Einrichtung des HTTP-Cache eine Datei auf dem CDN-Knoten gespeichert werden, wodurch die Anzahl der CDN-Zurück-zu-Ursprünge, die Netzwerkverzögerung und der Druck auf den Ursprungsserver reduziert werden. 2. Haltepunktanforderung Accept-Ranges: Wenn der Server den Haltepunkt-Download unterstützt, gibt er diesen Antwortheader an den Client zurück. Wenn der Client dies weiß, kann er eine Haltepunktanforderung senden. . Content-Length: Die Länge der Antwortinformationen, die dem Client mitteilen, wie viele Daten von der aktuellen Anfrage zurückgegeben werden. Hierbei ist zu beachten, dass beim Senden einer Anfrage mit der Head-Methode keine spezifischen Daten zurückgegeben werden, sondern dass Content-Length die Größe der vollständigen Daten zurückgibt. Range/Content-Range: Der Client übermittelt bei der Anfrage einen Header namens Range und teilt dem Server mit, welchen Teil der Daten er anfordern möchte. Beispiel: „Bereich: Bytes=0-1023“ bedeutet, dass die Bytes 0 bis 1023 angefordert werden. Anschließend gibt der Server den Inhalt dieser 1024 Bytes an den Client zurück und Content-Range wird in den Antwortheader aufgenommen. Das heißt: Inhaltsbereich: Bytes 0-1023/4096, diese 4096 ist die Gesamtdateigröße. Die nächste Anfrage des Clients kann ab dem 1024. Byte beginnen, Bereich: Bytes=1024-xxxx 3. Codierung Accept-Encoding/Content-Encoding: Ersteres wird von der vom Client empfangenen Nachricht unterstützt Codierungstyp. Der Standardwert ist „Identität“. Zu den optionalen Werten gehören „gzip“, „komprimieren“ usw. Letzteres ist der Inhaltskodierungstyp der serverseitigen Antwortinformationen, und häufig wird Komprimierung verwendet. Die Vorteile der Komprimierung liegen auf der Hand. Im Vergleich zum CPU-Verbrauch, der durch die serverseitige Komprimierung verursacht wird, ist die Reduzierung der Netzwerkübertragung offensichtlich praktischer. Gängige Formen: Inhaltskodierung: gzip, deflate, compress Normalerweise können wir Antwortergebnisse wie HTML, JS, CSS, XML und JSON komprimieren und übertragen. Transfer-Encoding: Antwort-Header Der Transfer-Codierungstyp der Antwortnachricht gibt die Form der Netzwerkübertragung an. Im Allgemeinen hat es die folgende Form: Transfer-Encoding: chunked. Wenn der Server dynamische Inhalte generiert und die spezifische Länge der Antwortinformationen nicht kennt, kann er diese über diesen festgelegten Block übertragen und so viele Daten zurückgeben, wie er verarbeitet. Es besteht also keine Notwendigkeit, mit der Rückgabe zu warten, bis die Daten bereit sind auf einmal. In Kombination mit der oben genannten Inhaltskodierung, wie z. B. gzip, kann es in Blöcken komprimiert und übertragen werden. Bitte beachten Sie außerdem, dass wir bei Verwendung dieser Codierung zur Übertragung die Inhaltslänge nicht sehen können, da der Inhalt nicht vollständig generiert wurde. 4. Andere X-Forward-For: Anforderungsheader Wird verwendet, um die tatsächliche IP des Benutzers zu identifizieren, insbesondere beim Zugriff auf den Server über einen Proxy (vorwärts oder rückwärts) oder wenn der Server vorhanden ist unter Last Gleichen Sie die Situation hinter dem Gerät aus. Format: X-forward-For: Client, Proxy1, Proxy2, ... Ganz links ist die IP, die dem Client am nächsten liegt. User-Agent: Anforderungsheader, der vom Server verwendet wird, um die grundlegenden Informationen des Clients zu identifizieren. Im Allgemeinen ist dies nützlich, wenn Suchcrawler identifiziert werden. In einigen Szenarien kann dies auch zur Erstellung einiger Clientstatistiken verwendet werden. Referer: Wenn der Client auf den Server zugreift, gibt dieser Referer die Quelle der Anfrage an, z. B. von welcher Website aus sie verlinkt wird. Darüber hinaus besteht eine weitere wichtige Verwendung darin, illegale Anforderungsquellen in Szenarien zu filtern, die Anti-Hotlinking von Ressourcen erfordern (dieser Referrer kann jedoch vom Client gefälscht werden). Standort: Antwortheader Dieser Standortheader wird in den Antwortheader des 301/302-Statuscodes eingefügt, um den Client anzuweisen, die neue Adresse für den Zugriff auf die erforderlichen Ressourcen zu verwenden. Verbindung: Anforderungs-/Antwort-Header. Standardmäßig behalten Client und Server die Verbindung bei, d. h. Verbindung: Keep-Alive. Wenn eine der Parteien die Verbindung nicht aufrechterhalten möchte, können Sie dies tun put this Der Wert ist auf close eingestellt. Standardmäßig halten der Client und der Server eine lange Verbindung aufrecht, sodass der Client diese Verbindung zum Senden mehrerer HTTP-Anfragen verwenden kann, wodurch der durch häufige Verbindungsaufbau verursachte Verbrauch reduziert wird. Für diesen Parameter sind möglicherweise weitere Einstellungen auf der Serverseite erforderlich, z. B. die Keep-Alive-Zeit der Verbindung und einige Netzwerkparametereinstellungen des Serverkernels (für TCP). Sitzung und Cookie HTTP-Anfragen sind zustandslose Anfragen, aber in unseren Internetanwendungen ist es oft notwendig, Benutzerstatusinformationen zu identifizieren, um einige interaktive Vorgänge abzuschließen. Beispielsweise muss die Benutzerauthentifizierung den Anmeldestatus des Benutzers aufzeichnen, und Warenkorbanwendungen müssen sich den Benutzer merken Auswahlen. Produkte, Werbeanwendungen müssen das historische Surfverhalten der Benutzer usw. aufzeichnen. Dabei kommen Session- und Cookies zum Einsatz. Sitzung: Bezieht sich auf den Interaktionsstatus zwischen dem Client und dem Server während des HTTP-Anfrage-Antwort-Prozesses. Diese Informationen werden auf der Serverseite gespeichert, z. B. im Speicher, in der Datenbank usw. Jede Sitzung verfügt über eine eindeutige Kennung, die vom Server generiert wird. Diese Kennung muss auch auf dem Client gespeichert werden, damit der Client diese Kennung bei der nächsten Anfrage mitbringen kann, um dem Server die Ermittlung des Client-Status zu erleichtern. Client-Unterstützung für Sitzungen: Speichern Sie die Sitzungs-ID über Cookies und senden Sie sie bei Anfrage an den Server. Kommunizieren Sie mit dem Server, indem Sie die Sitzungs-ID in den URL-Parametern tragen. Kommunizieren Sie mit dem Server, indem Sie die Sitzungs-ID in das ausgeblendete Feld des Formulars tragen. Problem bei der Sitzungsfreigabe: In verteilten Anwendungen wird unser http-Server normalerweise hinter einem Reverse-Proxy oder einem Lastausgleichsgerät platziert, wodurch ein Problem bei der Sitzungsfreigabe auftritt. Das heißt, mehrere Anfragen desselben Benutzers können auf mehrere verschiedene Maschinen verteilt werden. Wenn wir die Sitzung im lokalen Speicher der Maschine speichern, können wir die Sitzung des Benutzers nicht auf mehrere Maschinen verteilen. Im Allgemeinen können wir dieses Problem auf zwei Arten lösen: Speichern Sie die Sitzung im verteilten Speicher (z. B. im Zwischenspeicher) oder im zentralen Speicher (z. B. in der Datenbank). Verteilen Sie die Anforderungen desselben Benutzers an denselben Computer auf dem Reverse-Proxy oder dem Lastausgleichsgerät (das Problem der Neuverteilung von Anforderungen nach dem Ausfall des Computers muss hier behandelt werden). Cookie: Behalten Sie zustandsbehaftete Informationen auf dem Client bei. Jeder Cookie-Inhalt gehört zu einer bestimmten Domäne (Domäne) und einem bestimmten Pfad (Pfad). Aus Sicherheitsgründen können Cookies in verschiedenen Domänen oder Pfaden nicht geteilt werden. Sitzungscookie: Es ist keine Ablaufzeit angegeben, es wird im Speicher gespeichert und läuft ab, nachdem der Browser geschlossen wird. Persistentes Cookie: Gibt die Ablaufzeit an und wird lokal im Browser gespeichert. Einzelheiten finden Sie unter: http://en.wikipedia.org/wiki/HTTP_cookie Es ist zu beachten, dass Cookies einige Sicherheitsprobleme haben. Hier habe ich nur mein Verständnis einiger Inhalte im Zusammenhang mit dem http-Protokoll zusammengefasst, auf die ich bei der Arbeit gestoßen bin. Es gibt noch viele Dinge, die im http-Protokoll untersucht werden müssen, und wir müssen auch weiterhin erforschen Verstehen Sie das http-Protokoll. Es wird unseren Entwicklungsanwendungen großen Komfort bieten. Abschließend empfehle ich zwei sehr wichtige HTTP-Debugging-Tools: Fiddler (Windows) und Charles (Mac) verfügen über eine HTTP-Proxy-Funktion. Sie können HTTP-Anwendungen verwenden, die nicht browserbasiert sind (z. B. mobile Apps). diese beiden Ein Tool zur Überwachung von HTTP-Anfragen. Das obige ist der detaillierte Inhalt vonEinführung und vertieftes Verständnis des HTTP-Protokolls. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen





Sie haben etwas Wichtiges von Ihrem Startbildschirm gelöscht und versuchen, es wiederherzustellen? Es gibt verschiedene Möglichkeiten, App-Symbole wieder auf dem Bildschirm anzuzeigen. Wir haben alle Methoden besprochen, die Sie anwenden können, um das App-Symbol wieder auf dem Startbildschirm anzuzeigen. So machen Sie das Entfernen vom Startbildschirm auf dem iPhone rückgängig. Wie bereits erwähnt, gibt es mehrere Möglichkeiten, diese Änderung auf dem iPhone wiederherzustellen. Methode 1 – App-Symbol in der App-Bibliothek ersetzen Sie können ein App-Symbol direkt aus der App-Bibliothek auf Ihrem Startbildschirm platzieren. Schritt 1 – Wischen Sie seitwärts, um alle Apps in der App-Bibliothek zu finden. Schritt 2 – Suchen Sie das App-Symbol, das Sie zuvor gelöscht haben. Schritt 3 – Ziehen Sie einfach das App-Symbol aus der Hauptbibliothek an die richtige Stelle auf dem Startbildschirm. Dies ist das Anwendungsdiagramm

Die Rolle und praktische Anwendung von Pfeilsymbolen in PHP In PHP wird das Pfeilsymbol (->) normalerweise verwendet, um auf die Eigenschaften und Methoden von Objekten zuzugreifen. Objekte sind eines der Grundkonzepte der objektorientierten Programmierung (OOP) in PHP. In der tatsächlichen Entwicklung spielen Pfeilsymbole eine wichtige Rolle bei der Bedienung von Objekten. In diesem Artikel werden die Rolle und die praktische Anwendung von Pfeilsymbolen vorgestellt und spezifische Codebeispiele bereitgestellt, um den Lesern ein besseres Verständnis zu erleichtern. 1. Die Rolle des Pfeilsymbols für den Zugriff auf die Eigenschaften eines Objekts. Das Pfeilsymbol kann für den Zugriff auf die Eigenschaften eines Objekts verwendet werden. Wenn wir ein Paar instanziieren

Der Linuxtee-Befehl ist ein sehr nützliches Befehlszeilentool, das Ausgaben in eine Datei schreiben oder an einen anderen Befehl senden kann, ohne die vorhandene Ausgabe zu beeinträchtigen. In diesem Artikel werden wir die verschiedenen Anwendungsszenarien des Linuxtee-Befehls eingehend untersuchen, vom Anfänger bis zum Experten. 1. Grundlegende Verwendung Werfen wir zunächst einen Blick auf die grundlegende Verwendung des Tee-Befehls. Die Syntax des Tee-Befehls lautet wie folgt: tee[OPTION]...[DATEI]...Dieser Befehl liest Daten aus der Standardeingabe und speichert sie dort

Die Go-Sprache ist eine Open-Source-Programmiersprache, die von Google entwickelt und erstmals 2007 veröffentlicht wurde. Sie ist als einfache, leicht zu erlernende, effiziente Sprache mit hoher Parallelität konzipiert und wird von immer mehr Entwicklern bevorzugt. In diesem Artikel werden die Vorteile der Go-Sprache untersucht, einige für die Go-Sprache geeignete Anwendungsszenarien vorgestellt und spezifische Codebeispiele gegeben. Vorteile: Starke Parallelität: Die Go-Sprache verfügt über eine integrierte Unterstützung für leichtgewichtige Threads-Goroutinen, mit denen die gleichzeitige Programmierung problemlos implementiert werden kann. Goroutine kann mit dem Schlüsselwort go gestartet werden

Wie implementiert man HTTP-Streaming in C++? Erstellen Sie einen SSL-Stream-Socket mit Boost.Asio und der asiohttps-Clientbibliothek. Stellen Sie eine Verbindung zum Server her und senden Sie eine HTTP-Anfrage. Empfangen Sie HTTP-Antwortheader und drucken Sie sie aus. Empfängt den HTTP-Antworttext und gibt ihn aus.

Die breite Anwendung von Linux im Bereich Cloud Computing Mit der kontinuierlichen Weiterentwicklung und Popularisierung der Cloud-Computing-Technologie spielt Linux als Open-Source-Betriebssystem eine wichtige Rolle im Bereich Cloud Computing. Aufgrund seiner Stabilität, Sicherheit und Flexibilität werden Linux-Systeme häufig in verschiedenen Cloud-Computing-Plattformen und -Diensten eingesetzt und bieten eine solide Grundlage für die Entwicklung der Cloud-Computing-Technologie. In diesem Artikel werden die vielfältigen Einsatzmöglichkeiten von Linux im Bereich Cloud Computing vorgestellt und konkrete Codebeispiele gegeben. 1. Anwendungsvirtualisierungstechnologie von Linux in der Virtualisierungstechnologie der Cloud-Computing-Plattform

Der MySQL-Zeitstempel ist ein sehr wichtiger Datentyp, der Datum, Uhrzeit oder Datum plus Uhrzeit speichern kann. Im eigentlichen Entwicklungsprozess kann die rationelle Verwendung von Zeitstempeln die Effizienz von Datenbankoperationen verbessern und zeitbezogene Abfragen und Berechnungen erleichtern. In diesem Artikel werden die Funktionen, Features und Anwendungsszenarien von MySQL-Zeitstempeln erläutert und anhand spezifischer Codebeispiele erläutert. 1. Funktionen und Eigenschaften von MySQL-Zeitstempeln In MySQL gibt es zwei Arten von Zeitstempeln, einer ist TIMESTAMP

1. Zuerst klicken wir auf den kleinen weißen Punkt. 2. Klicken Sie auf das Gerät. 3. Klicken Sie auf Mehr. 4. Klicken Sie auf Anwendungsumschalter. 5. Schließen Sie den Anwendungshintergrund.
