HTTP基礎知識

HTTP Request Header 請求頭

http://www.runoob.com/http/http-messages.html

HTTP連接過程

請求方法

請求方法類型 描述
GET 請求指定的頁面信息,並返回實體主體。
POST 向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST請求可能會導致新的資源的建立和/或已有資源的修改。
OPTIONS 允許客戶端查看服務器的性能。
HEAD 類似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭
PUT 從客戶端向服務器傳送的數據取代指定的文檔的內容。
DELETE 請求服務器刪除指定的頁面。
CONNECT HTTP/1.1協議中預留給能夠將連接改爲管道方式的代理服務器。
TRACE 回顯服務器收到的請求,主要用於測試或診斷。

請求頭

HTTP Request Header 請求頭

Header請求頭類型 解釋 示例
Accept 指定客戶端能夠接收的內容類型 Accept: text/plain, text/html
Accept-Charset 瀏覽器可以接受的字符編碼集 Accept-Charset: iso-8859-5
Accept-Encoding 指定瀏覽器可以支持的web服務器返回內容壓縮編碼類型 Accept-Encoding: compress, gzip
Accept-Language 瀏覽器可接受的語言 Accept-Language: en,zh
Accept-Ranges 可以請求網頁實體的一個或者多個子範圍字段 Accept-Ranges: bytes
Authorization HTTP授權的授權證書 Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Cache-Control 指定請求和響應遵循的緩存機制 Cache-Control: no-cache
Connection 表示是否需要持久連接。(HTTP 1.1默認進行持久連接) Connection: close
Cookie HTTP請求發送時,會把保存在該請求域名下的所有cookie值一起發送給web服務器。 Cookie: $Version=1; Skin=new;
Content-Length 請求的內容長度 Content-Length: 348
Content-Type 請求的與實體對應的MIME信息 Content-Type: application/x-www-form-urlencoded
Date 請求發送的日期和時間 Date: Tue, 15 Nov 2010 08:12:31 GMT
Expect 請求的特定的服務器行爲 Expect: 100-continue
From 發出請求的用戶的Email From: [email protected]
Host 指定請求的服務器的域名和端口號 Host: www.zcmhi.com
If-Match 只有請求內容與實體相匹配纔有效 If-Match: “737060cd8c284d8af7ad3082f209582d”
If-Modified-Since 如果請求的部分在指定時間之後被修改則請求成功,未被修改則返回304代碼 If-Modified-Since: Sat, 29 Oct 2010 19:43:31 GMT
If-None-Match 如果內容未改變返回304代碼,參數爲服務器先前發送的Etag,與服務器迴應的Etag比較判斷是否改變 If-None-Match: “737060cd8c284d8af7ad3082f209582d”
If-Range 如果實體未改變,服務器發送客戶端丟失的部分,否則發送整個實體。參數也爲Etag If-Range:“737060cd8c284d8af7ad3082f209582d”
If-Unmodified-Since 只在實體在指定時間之後未被修改才請求成功 If-Unmodified-Since: Sat, 29 Oct 2010 19:43:31 GMT
Max-Forwards 限制信息通過代理和網關傳送的時間 Max-Forwards: 10
Pragma 用來包含實現特定的指令 Pragma: no-cache
Proxy-Authorization 連接到代理的授權證書 Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Range 只請求實體的一部分,指定範圍 Range: bytes=500-999
Referer 先前網頁的地址,當前請求網頁緊隨其後,即來路 Referer: http://www.zcmhi.com/archives/71.html
TE 客戶端願意接受的傳輸編碼,並通知服務器接受接受尾加頭信息 TE: trailers,deflate;q=0.5
Upgrade 向服務器指定某種傳輸協議以便服務器進行轉換(如果支持) Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
User-Agent User-Agent的內容包含發出請求的用戶信息 User-Agent: Mozilla/5.0 (Linux; X11)
Via 通知中間網關或代理服務器地址,通信協議 Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)
Warning 關於消息實體的警告信息 Warn: 199 Miscellaneous warning

狀態碼

狀態碼 狀態 說明
200 OK 表示請求被服務器正常處理
204 No Content 表示請求已成功處理,但是沒有內容返回,也就是返回的響應報文中沒有報文實體,瀏覽器頁面不會發生更新
301 Moved Permanently 永久重定向,表示請求的資源已經永久的搬到了其他位置,就是說資源已經被分配了新的URI
302 Found 臨時重定向,表示請求的資源臨時搬到了其他位置請求的資源暫時被配到到了新的URI
400 Bad Request 表示請求報文存在語法錯誤或參數錯誤,服務器不理解服務器不應該重複提交這個請求。
401 Unauthorized 表示發送的請求需要有HTTP認證信息或者是認證失敗了返回401的響應必須包含一個適用於被請求資源的WWW-Authenticate首部以質詢用戶信息
403 Forbidden 表示對請求資源的訪問被服務器拒絕了
404 Not Found 表示服務器找不到你請求的資源
500 Internal Server Error 表示服務器執行請求的時候出錯了,可能是Web應用有bug或臨時故障
503 Service Unavailable 表示服務器超負載或正停機維護,無法處理請求

報文結構

cookie、session和token

cookie

cookie分爲‘會話’‘持久’cookie

  • 會話cookie:是一種臨時cookie,無過期時間,是隨着用戶退出瀏覽器時,被刪除。不能被瀏覽器共享。(常常被用於保存sessionID)
  • 持久cookie:是一種保存在硬盤中的cookie,一般會有一個過期時間,如果過期,則會刪除這個cookie。可以被瀏覽器共享

cookie原理如下:

優點:

  • 保存在客戶端,不佔用服務器資源。

缺點:

  • 安全級別是三者中最低的,容易被劫持和利用
  • 受瀏覽器的限制很大
  • 存儲有大小和數量的限制
  • 在禁用cookie的地方無法使用

session

Session:又稱爲“會話控制”。是存儲特定用戶會話所需的屬性及配置信息。當用戶在應用程序的 Web 頁之間跳轉時,存儲在 Session 對象中的變量將不會丟失,而是在整個用戶會話中一直存在下去。

session原理如下:

優點:

  • 相對cookie更安全。
  • 可以靈活的控制存儲對象。

缺點:

  • 存在分佈式系統session共享問題。需要redis等方式解決。
  • 因爲session是存在cookie中的,所以也繼承了cookie的缺點。

Token

https://my.oschina.net/jamesfancy/blog/1613994 這篇文章對token講解的非常詳細。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章