首頁  >  文章  >  web前端  >  HTTP協定深度解析

HTTP協定深度解析

一个新手
一个新手原創
2017-09-21 10:36:402362瀏覽

HTTP協定深度解析

#http 介紹http 的請求部分http 請求的基本結構請求行詳解 HTTP 請求訊息標頭Http 響應詳解http 回應的基本結構狀態行http 回應訊息標頭詳解Expires、Pragma、Cache-Control 設定不緩存Expires、Pragma、Cache-Control 設定 指定快取時間HTTP 請求的細節——通用資訊頭

#http 介紹

  1. http 協定是建立在tcp/ip 協定基礎上
  2. http 協定全名為超文本傳輸協定( HTTP

    ,HyperText Transfer Protocol )
  3. http 協定版本1.0 1.1 2.0
  4. http 1.0 成為短連接,http 1.1 稱為長連接

    #所謂長和短是指持續時間長連線1.1 30s 短連線發送完資料立刻斷開
  5. Http定義了與伺服器互動的不同方法,最基本的方法有4種,分別是GET,POST,PUT,DELETE。 URL全名為資源描述符,我們可以這樣認為:一個U RL位址,它用來描述一個網路上的資源,而HTTP中的G ET,POST,PUT,DELETE就對應著對這個資源的查,改,增,刪4個操作。到這裡,大家應該有個大概的了解了,GET一般用於獲取/查詢資源信息,而POST一般用於更新資源信息。

#http 的請求部分

#http 請求的基本結構

請求行

訊息頭

一空行

請求行

請求方式有:post、get、options、delete、trace、put

###### ## 常用的有:post、get################## post 與get區別:##########

GET使用URL或Cookie傳參。而POST將資料放在BODY中。

GET的URL會有長度上的限制,則POST的資料則可以非常大。

POST比GET安全,因為資料在網址列上不可見。

詳解HTTP 請求訊息標頭
  1. #Accept :告訴伺服器我可以接受的文件類型瀏覽器可接受的MIME類型

  2. #Accept-Charset:瀏覽器可接受的字元集編碼

  3. Accept-Encoding:可以接受以某種格式壓縮後的資料例如:gzip 、compress。瀏覽器能夠進行解碼的資料編碼方式

  4. #Accept-Langage:瀏覽器支援的語言

  5. ##Host:表示我要找的主機是誰

  6. # If-Wodified-Since: 告訴伺服器本機的快取中是否有所要請求的檔案包含這個請求檔案的時間// 伺服器受收到這個請求將時間進行比較從而判斷瀏覽器所要請求的檔案是否發生改變,要是發生變更將發送一份新的文件給瀏覽器。沒有改變就不會再次發送資料。 //註:只有當所要求的內容在指定的日期之後又經過修改才返回它,否則返回304"Not Modified"應答。
  7. Referer:告訴伺服器,我來自哪裡。訊息頭,常用於防止盜鏈。

    關於如何防止盜鏈的個人理解:

    #盜鏈:盜鍊是指服務提供者本身不提供服務的內容,透過技術手段繞過其它有利益的最終用戶介面(如廣告),直接在自己的網站上向最終用戶提供其它服務提供者的服務內容,騙取最終用戶的瀏覽和點擊率。提供資源或提供很少的資源,而真正的服務提供者卻得不到任何的收益。位置。 ##User-Agent:告訴伺服器,瀏覽器核心。之一

    Connection:表示是否需要持久連線。到請求使用的是HTTP 1.1 (HTTP 1.1預設進行持久連接),它可以利用持久連接的優點,當頁麵包含多個元素時(例如Applet,圖片),顯著地減少下載所需的時間。這一點,Servlet需要在應答中傳送一個Content-Length頭,最簡單的實作方法是:先把內容寫入 ByteArrayOutputStream,然後在正式寫出內容之前計算它的大小。

  8. Date:瀏覽器發送該 http 請求的時間。

  9. Content-Length:表示請求訊息正文的長度。

  10. UA-Pixels,UA-Color,UA-OS,UA-CPU:由某些版本的IE瀏覽器發送的非標準的請求頭,表示螢幕大小、顏色深度、作業系統和CPU類型。

Http 回應詳解

#http 回應的基本結構

## 狀態列

多個訊息頭

## 實體內容

狀態列

格式: http版本號狀態碼原因敘述719f572dc95af346278bdd6251cfc5d3

範例:HTTP/1.1 200 OK

######### 狀態碼用來表示伺服器對請求的處理結果,它是一個三維的十進位數。響應狀態碼分為5類。 #############################400~ 499客戶端的請求有錯誤。常用404500~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,。。。

狀態碼 意思
100~199 #表示成功接收請求,要求客戶端繼續提交下次請求才能完成整個處理過程
#200~299 ##表示成功接收請求並已完成整個處理過程。 常用200
300~399 ##為完成請求,客戶端需進一步細化請求,例如:請求的資源已經移動一個新位址,常用302、307

以上是HTTP協定深度解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn