http記錄

HTTP三點注意事項:

  • HTTP是無連接:無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答後,即斷開連接。採用這種方式可以節省傳輸時間。
  • HTTP是媒體獨立的這意味着,只要客戶端和服務器知道如何處理的數據內容,任何類型的數據都可以通過HTTP發送。客戶端以及服務器指定使用適合的MIME-type內容類型。
  • HTTP是無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味着如果後續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在服務器不需要先前信息時它的應答就較快。
    https://www.runoob.com/http/http-intro.html

HTTP 協議的 9 種請求類型介紹

  • GET:請求指定的頁面信息,並返回實體主體。
  • POST:向指定資源提交數據進行處理請求(例如提交表單或者上傳文件),傳輸實體主體。數據被包含在請求體中。POST請求可能會導致新的資源的創建和/或已有資源的修改。
  • PUT:向指定資源位置上傳其最新內容;PUT 方法用來傳輸文件。就像 FTP 協議的文件上傳一樣,要求在請求報文的主體中包含文件內容,然後保存到請求 URI 指定的位置。
  • OPTIONS:詢問支持的方法。返回服務器針對特定資源所支持的HTTP請求方法。也可以利用向Web服務器發送’*'的請求來測試服務器的功能性。
  • HEAD:獲得報文首部。類似於 GET 請求,只不過返回的響應中沒有具體的內容,用於獲取報頭。這一方法可以在不必傳輸整個響應內容的情況下,就可以獲取包含在響應消息頭中的元信息。
  • DELETE:刪除文件。請求服務器刪除指定的頁面,是與 PUT 相反的方法。
  • TRACE:追蹤路徑。回顯服務器收到的請求,主要用於測試或診斷。
  • CONNECT:要求用隧道協議連接代理。HTTP/1.1 協議中預留給能夠將連接改爲管道方式的代理服務器。
  • PATCH:是對 PUT 方法的補充,用來對已知資源進行局部更新 。

控制檯的network裏出現兩次相同請求
https://www.cnblogs.com/bradwarden/p/11505999.html
Options請求出現的情況有兩種:

1、獲取後臺服務器支持的HTTP的通信方式

2、對跨域請求進行preflight request(預檢請求)。

預檢請求首先需要向另外一個域名的資源發送一個Http Options的請求頭,以檢測實際發送的請求是否是安全的。options請求是瀏覽器自發起的preflight request(預檢請求)。

preflight request請求報文中有兩個需要關注的首部字段:

(1)Access-Control-Request-Method:告知服務器實際請求所使用的HTTP方法;

(2)Access-Control-Request-Headers:告知服務器實際請求所攜帶的自定義首部字段。

同時服務器也會添加origin header,告知服務器實際請求的客戶端的地址。服務器基於從預檢請求獲得的信息來判斷,是否接受接下來的實際請求。

服務器所返回的Access-Control-Allow-Methods首部字段將所有允許的請求方法告知客戶端,返回將所有Access-Control-Request-Headers首部字段將所有允許的自定義首部字段告知客戶端。此外,服務器端可返回Access-Control-Max-Age首部字段,允許瀏覽器在指定時間內,無需再發送預檢請求,直接用本次結果即可。

在我們開發過程中出現的瀏覽器自發起的options請求就是上面的第二種情況。實際上,跨域請求中的”複雜請求”發出前會進行一次方法是options的preflight request。

二、當跨域請求是簡單請求時不會進行preflight request,只有複雜請求才會進行preflight request。

跨域請求分兩種:簡單請求、複雜請求;

符合以下任一情況的就是複雜請求:

1.使用方法put/delete/patch/post;

2.發送json格式的數據(content-type: application/json)

3.請求中帶有自定義頭部;

其他情況則可理解爲是簡單請求。

爲什麼跨域的複雜請求需要preflight request?

複雜請求可能對服務器數據產生副作用。例如delete或者put,都會對服務器數據進行修改,所以在請求之前都要先詢問服務器,當前網頁所在域名是否在服務器的許可名單中,服務器允許後,瀏覽器纔會發出正式的請求,否則不發送正式請求。

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