Heim  >  Artikel  >  Web-Frontend  >  Eingehende Analyse des HTTP-Protokolls

Eingehende Analyse des HTTP-Protokolls

一个新手
一个新手Original
2017-09-21 10:36:402364Durchsuche

Eingehende Analyse des HTTP-Protokolls

http Einführunghttp Der Anforderungsteil von http Grundstruktur der AnfrageAnfragezeileDetaillierte Erläuterung HTTP-AnfrageheaderHttp Antwortdetailshttp Grundstruktur der AntwortStatuszeilehttp Detaillierte Erläuterung der AntwortheaderAblauf, Pragma, Cache-Kontrolle Auf Nicht-Cache einstellenAblauf, Pragma, Cache-Kontrolle Einstellungen Cache-Zeit angebenHTTP Anfragedetails – Allgemeine Überschrift

http-Einführung

  1. Das http-Protokoll basiert auf dem TCP/IP-Protokoll

  2. Der vollständige Name des http-Protokolls lautet Hypertext Transfer Protocol ( HTTP, HyperText Transfer Protocol )

  3. http-Protokoll Version 1.0 1.1 2.0

  4. http 1.0 wird eine kurze Verbindung, http 1.1 wird eine lange Verbindung genannt

    Die sogenannte lange und kurze Verbindung bezieht sich auf die Langzeitverbindung 1,1 30s. Die kurze Verbindung wird sofort nach dem Senden der Daten getrennt

  5. Http definiert verschiedene Methoden für die Interaktion mit dem Server. Es gibt 4 grundlegendste Methoden, nämlich GET, POST, PUT und DELETE. Der vollständige Name der URL ist Ressourcendeskriptor. Wir können uns das so vorstellen: eine URL-Adresse, die zur Beschreibung einer Ressource im Netzwerk verwendet wird, und GET, POST, PUT und DELETE in HTTP entsprechen der Suche und Änderung von Diese Ressource hinzufügen und löschen. Zu diesem Zeitpunkt sollte jeder ein allgemeines Verständnis haben. GET wird im Allgemeinen zum Abrufen/Abfragen von Ressourceninformationen verwendet, während POST im Allgemeinen zum Aktualisieren von Ressourceninformationen verwendet wird.

Der Anforderungsteil von http

Grundstruktur der HTTP-Anfrage

Anfragezeile

Nachrichtenkopf

Eine Leerzeile

Inhalt

Anforderungszeile

Anforderungsmethoden sind: Post, Get, Optionen, Löschen, Trace, Put

Häufig verwendete Begriffe sind: post, get

Der Unterschied zwischen post und get:

GET verwendet URL oder Cookie, um Parameter zu übergeben. Und POST fügt die Daten in BODY ein.

Die GET-URL hat eine Längenbeschränkung und die POST-Daten können sehr groß sein.

POST ist sicherer als GET, da die Daten in der Adressleiste nicht sichtbar sind.

Erklärung der HTTP-Request-Header
  1. Akzeptieren: Teilen Sie dem Server mit, welche Dateien ich empfangen kann Accept Type MIME-Typen, die für den Browser akzeptabel sind

  2. Accept-Charset: Zeichensatzkodierung, die für den Browser akzeptabel ist

  3. Accept-Encoding: Kann komprimierte Daten in einem bestimmten Format akzeptieren, z. B.: gzip, compress. Datenkodierungsmethode, die der Browser dekodieren kann

  4. Accept-Langage: Vom Browser unterstützte Sprache

  5. Gastgeber: Gibt an, wer der Gastgeber ist, den ich suche

  6. If-Wodified-Since: Teilen Sie dem Server mit, ob im lokalen Cache eine anzufordernde Datei vorhanden ist, die die Uhrzeit der angeforderten Datei enthält // Der Server empfängt diese Anforderung und vergleicht die Uhrzeit, um festzustellen, ob die vom Browser angeforderte Datei vorhanden ist Bei Änderungen wird eine neue Datei an den Browser gesendet. Die Daten werden nicht unverändert erneut gesendet. //Hinweis: Nur wenn der angeforderte Inhalt nach dem angegebenen Datum geändert wurde, wird er zurückgegeben, andernfalls wird 304"Nicht zurückgegeben Geänderte" Antwort.

  7. Referer: Sagen Sie dem Server, wo ich herkomme. Dieser Nachrichtenheader wird oft verwendet, um Hotlinking zu verhindern. Persönliches Verständnis zur Verhinderung von Hotlinking:

    Hotlinking: Hotlinking bedeutet, dass der Dienstanbieter selbst keine Diensteinhalte bereitstellt , Umgehung anderer nützlicher Endbenutzerschnittstellen (z. B. Werbung) durch technische Mittel, Bereitstellung von Dienstinhalten anderer Dienstanbieter für Endbenutzer auf ihren eigenen Websites, Betrügen der Browsing- und Klickraten der Endbenutzer. Keine Begünstigten Ressourcen oder stellen nur wenige Ressourcen bereit, und der eigentliche Dienstanbieter erhält keinen Standortvorteil

    User-Agent: Sagt dem Server, Browser-Kernel:

    public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{        // 防止乱码      response.setContentType("text/html;charset=utf-8");        // 获取输出流      PrintWriter out = response.getWriter();        // 获取用户浏览器 Referer      String referer = request.getHeader("Referer");      if(referer == null || referer.startsWith("http://localhost:8080/本地内部用户web应用路径")){          response.sendRedirect("其他非真正资源网页");          return;      }else{                }      // 内部资源文件        。。。。。。。。。。。  }

    Cookie: Dies ist die wichtigste Anfrage.
  8. Verbindung: gibt an ob eine dauerhafte Verbindung erforderlich ist, oder wenn Sie sehen, dass die Anforderung HTTP 1.1 verwendet (HTTP 1.1 verwendet standardmäßig dauerhafte Verbindungen), kann es dauerhafte Verbindungen nutzen Reduzieren Sie die Downloadzeit erheblich, wenn die Seite mehrere Elemente enthält (z. B. Applets, Bilder). Um dies zu erreichen, muss das Servlet einen Content-Length-Header in der Antwort senden. Der einfachste Weg, dies zu erreichen, ist: Schreiben Sie zuerst den Inhalt ByteArrayOutputStream und berechnet dann seine Größe, bevor der Inhalt tatsächlich ausgegeben wird.
  9. Datum: Der Zeitpunkt, zu dem der Browser die http-Anfrage gesendet hat.
  10. Content-Length: Gibt die Länge des Anforderungsnachrichtentexts an.
  11. UA-Pixel, UA-Farbe, UA-OS, UA-CPU: Wird von einigen Versionen des IE-Browsers gesendet. Nicht standardmäßig Anforderungsheader, die Bildschirmgröße, Farbtiefe, Betriebssystem und CPU-Typ angeben.

HTTP-Antwortdetails

Grundstruktur der HTTP-Antwort

Statuszeile

Mehrere Nachrichtenkopfzeilen

Eine leere Zeile

Entitätsinhalt

Statuszeile

Format: HTTP-Versionsnummer, Statuscode, Grundbeschreibung719f572dc95af346278bdd6251cfc5d3

Beispiel: HTTP/1.1 200 OK

Der Statuscode wird verwendet, um das Verarbeitungsergebnis der Anfrage durch den Server anzuzeigen. Es handelt sich um eine dreidimensionale Dezimalzahl. Antwortstatuscodes sind in 5 Kategorien unterteilt.

状态码 含义
100~199 表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程
200~299 表示成功接收请求并已完成整个处理过程 。 常用200
300~399 为完成请求,客户端需进一步细化请求,例如:请求的资源已经移动一个新地址,常用302、307
400~499 客户端的请求有错误。常用 404
500~599 服务器端出现错误, 常用 500

http 响应消息头详解
  1. Location:让浏览器重新定位到 指定的 URL

  2. Server:告诉浏览器 服务器的类型

  3. Content-Encoding:服务端能够发送压缩编码类型

  4. Content-Length: 服务器端发送的压缩数据的长度

  5. Content-Langage:服务端发送的语言类型

  6. Content-Type:服务端发送的类型及采用的编码方式

  7. Last-Modified:服务端对该资源最后的修改(更新)时间

  8. Refresh:服务端要求浏览器在指定的时间,刷新,然后访问指定的页面路径

  9. Content-Disposition:attachmen;filename=aaa.zip 服务端要求客户端一下载文件的方式打开该文件,即告诉浏览器有文件需要下载

  10. Transfer-Encoding:传送数据到客户端的方式

  11. Set-Cookie:服务端发送到客户端的暂存数据

  12. Cache-Control:告诉浏览器如何缓存页面数据

  13. Expires:告诉浏览器如何缓存页面数据 参数 -1 不缓存

  14. Pragma:告诉浏览器如何缓存页面数据

  15. Connection:维护客户端和服务端的连接关系 是否保持连接

  16. Date:服务端响应客户端的时间

Expires、Pragma、Cache-Control 设置不缓存
// 指定该页面不缓存   ie浏览器内核response.setDateHeader("Expires",-1);// 兼容设置response.setHeader("Cache-Control","no-cache");response.setHeader("Pragma","no-cache");

Expires、Pragma、Cache-Control 设置 指定缓存时间
// 指定该页面缓存指定时间   ie浏览器内核response.setDateHeader("Expires",System.currentTimeMillis()*3600*1000*24;

HTTP 请求的细节————通用信息头

通用信息头指既能用于请求,又能用于响应的一些消息头

Cache-Control:no-cache

Pragma:no-cache

Connection:close/Keep-Alive

Date:Tue,。。。

Das obige ist der detaillierte Inhalt vonEingehende Analyse des HTTP-Protokolls. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn