鍍金池/ 問答/Java  PHP  Python  GO  HTML/ 服務(wù)器接收到expect: 100-continue請求過程,是幾次http請求

服務(wù)器接收到expect: 100-continue請求過程,是幾次http請求?

服務(wù)端接收到header 是expect:100-continue,進(jìn)行驗證信息,判斷是否可以通過驗證
如果可以通過驗證,返回status 100
如果通過了是不是客戶端發(fā)送的是第二次http請求?還是繼續(xù)這次http請求?
這種判斷,服務(wù)端程序該怎么寫呀,如果是兩次,http協(xié)議是無狀態(tài)的,怎么將兩次請求聯(lián)系到一起?

回答
編輯回答
初念

HTTP無狀態(tài)決定了本質(zhì)上無法繼續(xù)上次的HTTP請求。

首先,客戶端先發(fā)送了一個請求,這個請求的header中包含了一個屬性expect: 100-continue。這種情況一般出現(xiàn)于上傳大容量body或者是需要驗證的時候。這時服務(wù)器會讀取請求的header并返回一個100 continue的響應(yīng),如果服務(wù)器可以提供這項服務(wù)的話。客戶端再將http請求發(fā)送回去。然后服務(wù)器會讀取請求的body并且在成功后返回200狀態(tài)碼。

如果出于驗證的目的發(fā)出expect:100-continue,那么你只需在認(rèn)證通過之后的下一次請求中攜帶上你的認(rèn)證信息(authorization等等)即可。

如果是出于詢問服務(wù)器是否能夠完成自己的請求,比如是不是能夠向它發(fā)送一個類型為video/mp4的大文件時,則第二次正常發(fā)送body為這個文件的http請求即可。這里使用expect:100-continue的原因在于避免大文件傳送失敗帶來的帶寬浪費。第一次發(fā)送的詢問請求可以只有一個header,如果服務(wù)器拒絕提供這個服務(wù),則無需繼續(xù)發(fā)送大文件。

2018年3月2日 13:41