1. 程式人生 > >HTTP協議詳解之報頭篇

HTTP協議詳解之報頭篇

最近看《PHP核心技術與最佳實踐》一書,HTTP協議部分講解的清晰易懂,特此整理。

HTTP協議如何工作?

1. 建立連線

客戶機與伺服器需要建立連線。單機某個超連結,HTTP協議工作開始

2. 傳送請求

建立連線後,客戶機發送一個請求給伺服器。格式為:前面是統一資源識別符號URL,中間是協議版本號,後面是MIME資訊(包括請求修飾符、客戶機資訊和可能的內容)

3. 響應

伺服器接到請求後,給予相應的響應資訊。格式為:首先是一個狀態行(包括資訊的協議版本號、一個成功或錯誤的程式碼),然後是MIME資訊(包括伺服器資訊、實體資訊和可能的內容)

4. 斷開連線

報頭

HTTP訊息報頭包括普通報頭、請求報頭、響應報頭、實體報頭。每個報頭域組成形式如下:

名字+ : +空格+值

一個報頭的資訊截圖如:

這裡寫圖片描述

Host:

頭域指定的請求資源的Internet主機和埠號,必須表示請求URL的原始伺服器或閘道器的位置。HTTP請求必須包含主機頭域,否則系統會以400狀態碼返回

User-Agant:

簡稱UA,內容包含發出請求的使用者資訊,通常UA包含瀏覽者的資訊,主要是瀏覽器的名稱版本和所用的作業系統。上圖可以看到客戶端使用的是Chrome瀏覽器/windows系統。這個UA頭不僅僅是使用瀏覽器才存在,只要使用了基於HTTP協議的客戶端軟體都會發送這個請求,無論是手機端還是PDA等,這個UA頭是辨別客戶端所用裝置的重要依據。

Accept:

告訴伺服器可以接受的檔案格式。通常這個值在各種瀏覽器中都差不多,不過WAP瀏覽器所能接受的格式要少一些,這也是用來區分WAP和計算機瀏覽器的主要依據之一,隨著WAP瀏覽器的升級,其已經和計算機瀏覽器越來越接近,因此這個判斷所起的作用也越來越弱。

Cookie分兩種,一種是客戶端向伺服器傳送的,使用Cookie報頭,用來標記一些資訊,另一種是伺服器傳送給瀏覽器的,報頭為Set-Cookie。二者的主要區別是Cookie報頭的value裡可以有多個Cookie值,並且不需要顯示指定domain等。而Set-Cookie報頭裡一條記錄只能有一個Cookie的value,需要指明domain、path等。

Cache-Control:

指定請求和響應遵循的快取機制。在請求訊息或響應訊息中設定Cache-Control並不會修改另一個訊息訊息處理過程中的快取處理過程。請求時的快取指令包括no-cache、no-store、man-age、max-stake、min-fresh、only-if-cached;響應訊息中的指令包括 public、privete、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age。

Referer:

頭域允許客戶端指定請求URL的資源源地址,這可以允許伺服器生成回退連結串列,可用來登入、優化快取等。也允許廢除的或錯誤的連結由於維護的目的被追蹤。如果請求的URL沒有自己的URL地址,Referer不能被髮送。如果指定的是部分URL地址,則此地址應該是一個相對地址,Referer通常是流量統計系統用來記錄來訪者地址的引數。

Content-Length:

內容長度。

Content-Range:

響應的資源範圍。可以在每次請求中標記請求的資源範圍,在連線斷開重連時,客戶端只請求該資源未下載的部分,而不是重新請求整個資源,實現斷點續傳。迅雷就是基於這個原,使用多執行緒分段讀取網路上的資源,最後再合併。

Accept-Encoding:

指定所能接收的編碼方式,通常伺服器會對頁面進行GZIP壓縮後再輸出以減少流量,一般瀏覽器均支援對這種壓縮後的資料進行處理,但對於我們來說,如果不想接收到這些看似亂碼的資料,可以指定不接收任何伺服器端壓縮處理,要求其原樣返回。

自定義報頭:

在HTTP訊息中,也可以使用一些在HTTP1.1正式規範裡沒有定義的頭欄位,這些頭欄位統稱為自定義的HTTP頭或擴充套件頭。比如上圖中的server欄位,這個報頭一般是由伺服器傳送的。也可以定義一些“不正規”的報頭,如“WEBMASTER:[email protected]”。在PHP裡,使用header函式即可實現。

相關推薦

HTTP協議報頭

最近看《PHP核心技術與最佳實踐》一書,HTTP協議部分講解的清晰易懂,特此整理。 HTTP協議如何工作? 1. 建立連線 客戶機與伺服器需要建立連線。單機某個超連結,HTTP協議工作開始 2. 傳送請求 建立連線後,客戶機發送一個請求給伺服器。格

http協議請求

http請求由三部分組成:請求行,訊息報頭,請求正文 1)get:請求獲取request-uri所標識的資源 2)post:在request-uri所標識的資源後附加新的資料 3)head:請求獲取由request-uri所標識的資源的響應訊息報頭 4)put:請求伺服器儲

HTTP協議響應

HTTP響應也是由三個部分組成,分別是:狀態行、訊息報頭、響應正文 1、狀態行格式如下: HTTP-Version Status-Code Reason-Phrase CRLF 其中,HTTP-Version表示伺服器HTTP協議的版本;Status-Code表示伺服器發回的響應狀態程式碼;Reason-Ph

JavaWeb學習----HTTP協議

package com.http.demo; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import j

HTTP協議 (三) 壓縮 之前寫過一個HTTP協議】 ,這次繼續介紹HTTP協議中的壓縮。 本文會使用Fiddler來檢視HTTP request和Response, 如果不熟悉這個工

之前寫過一個篇 【HTTP協議詳解】 ,這次繼續介紹HTTP協議中的壓縮。 本文會使用Fiddler來檢視HTTP request和Response, 如果不熟悉這個工具,可以先參考[Fiddler教程] HTTP壓縮是指: Web伺服器和瀏覽器之間壓縮傳輸的”文字內容“的方法。 HTTP採用通用的壓縮演算

介面自動化測試HTTP協議

協議 簡單理解,計算機與計算機之間的通訊語言就叫做協議,不同的計算機之間只有使用相同的協議才能通訊。所以網路協議就是為計算機網路中進行資料交換而建立的規則,標準或約定的集合。 OSI模型 1978年國際化標準組織提出了“開放系統網際網路參考模型”,即著名的OSI模型。它將計

HTTP協議(真的很經典)

cnp 運用 web應用 media 服務器端 所有 長度 request bad 轉載:http://e7kan.com/?p=264& 引言 HTTP是一個屬於應用層的面向對象的協議,由於其簡捷、快速的方式,適用於分布式超媒體信息系統。它於1990年提出,經過幾

http協議

表單 pos 換行 none 必須掌握 通信 pow print expires HTTP是一個屬於應用層的面向對象的協議,由於其簡捷、快速的方式,適用於分布式超媒體信息系統。它於1990年提出,經過幾年的使用與發展,得到不斷地完善和擴展。目前在WWW中使用的是HTTP/1

HTTP 協議

範圍 文件傳輸 ext text 繼續 warn 分組 asi nsf 前言:   之前買過一本《圖解 HTTP》這本書,作者好像是個小日本,也繼承了小日本在動漫方面的天賦,30% 的內容都是 Q 版畫圖。   之後沒有引起我的重視,書一借出去,然後,之後 .. 之後,

Http 協議筆記

code sps 網頁 提示 agent tor 指定 6.0 lec HTTP是一個屬於應用層的面向對象的協議,由於其簡捷、快速的方式,適用於分布式超媒體信息系統。它於1990年提出,經過幾年的使用與發展,得到不斷地完善和擴展。目前在WWW中使用的是HTTP/1.0的第六

HTTP協議以及URL具體訪問過程

標記語言 初始化 折疊 code 文件類型 scheme 缺少 gif 其他瀏覽器 1、簡介   1.1、HTTP協議是什麽?   即超文本傳輸協議(HTTP,HyperText Transfer Protocol)是互聯網上應用最為廣泛的一種網絡協議,所有的WWW文件都必

Java定時任務工具Timer

java 定時任務 定時 任務調度 什麽 出身 需要 bsp 機制 Java定時任務調度工具詳解 什麽是定時任務調度? ◆ 基於給定的時間點,給定的時間間隔或者給定的執行次數自動執行的任務。 在Java中的定時調度工具? ◆ Timer ◆Quartz Time

HTTP協議??

www protocol tcp url web nsf ide 信息 http HTTP 協議是 Hyper Text Transfer Protocol(超文本傳輸協議)的縮寫,是用於從萬維網(WWW:World Wide Web)服務器傳輸超文本到本地瀏覽器的傳送

1553B 協議二字的組成

產生 差分 4.2 所有 管理 錯誤處理 遠程終端 同時 通道 1553B簡介本設計文檔將在SylixOS下設計一個1553B設備驅動的抽象層,從而進一步解除用戶層與驅動層的耦合。MIL-STD-1553B總線是美國空軍電子子系統聯網的標準總線,是一種中央集權式的串行總線,

Javaweb:http協議

HTTP是一個屬於應用層的面向物件的協議,由於其簡捷、快速的方式,適用於分散式超媒體資訊系統。它於1990年提出,經過幾年的使用與發展,得到不斷地完善和擴充套件。目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的規範化工作正在進行之中,而且HTTP-NG(Next Generat

筆記轉載 HTTP [轉]HTTP協議,你所不知道的

[轉]HTTP協議詳解,你所不知道的   什麼是HTTP協議 協議是指計算機通訊網路中兩臺計算機之間進行通訊所必須共同遵守的規定或規則,超文字傳輸協議(HTTP)是一種通訊協議,它允許將超文字標記語言(HTML)文件從Web伺服器傳送到客戶端的瀏覽器

HTTP協議(真的很經典)--轉載

連續 查找 初始 出現 門戶 全部 4.0 form ons 概要: HTTP是一個屬於應用層的面向對象的協議,由於其簡捷、快速的方式,適用於分布式超媒體信息系統 | |目錄 1引言 2一

HTTP協議 轉自小坦克

當今web程式的開發技術真是百家爭鳴,ASP.NET, PHP, JSP,Perl, AJAX 等等。 無論Web技術在未來如何發展,理解Web程式之間通訊的基本協議相當重要, 因為它讓我們理解了Web應用程式的內部工作. 本文將對HTTP協議進行詳細的例項

HTTP協議-HTTP協議

HTTP協議是一個網際網路協議,不僅用來傳輸網頁。也被很多的軟體用來與伺服器通訊,在協議中包含了許多的通訊樣式的規定等,接下來就讓我們從頭開始瞭解它。 3.1. 在TCP/IP協議棧中的位置 HTTP是一個應用層協議,由請求和響應構成,是一個標準的客戶端伺服器模

TCP協議TCP Flag標誌位來判斷TCP會話的開始和結束

首先回顧一下TCP標誌位的具體含義。 TCP Flag標誌位(控制位) 一個TCP包的詳細內容: TCP FLAG 標記佔1.5個byte,12bit(4bit+8bit,前半個byte與Header Length公用)。 12bit中前三個bit是保留,預設為全0