CORS中的預檢請求
有時候加載一個網頁的時候會看到一個相同的異步請求發生兩次,這就是CORS中的預檢請求。
在CORS(Cross-Origin Resource Sharing)中,允許使用自定義的Headers,Methods和不同類型的請求內容,這個是一個透明的服務器端驗證機制,這就叫預檢請求(Preflighted Requests)。
當你想發起一個帶著高級選項的請求時,一個預檢請求首先會發生。這個預檢請求使用的方法是“OPTIONS”,包含了以下Headers:
Origin, Access-Control-Request-Method,,Access-Control-Request-Headers;
請求發起后,服務器響應回復如下內容決定是否處理此類請求。
Access-Control-Allow-Origin: http://foo.example
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Headers: X-PINGOTHER, Content-Type
Access-Control-Max-Age: 86400
一旦預檢請求發生,結果會被緩存(Access-Control-Max-Age)秒,下次就不會再請求了。
后記:
1,這種請求不需要手動設置什么,只要是符合條件的CORS,瀏覽器會自動發起。
2,這其實也會為了保護服務器,防止在請求時發生不必要的意外。