CORS中的預(yù)檢請求
有時候加載一個網(wǎng)頁的時候會看到一個相同的異步請求發(fā)生兩次,這就是CORS中的預(yù)檢請求。
在CORS(Cross-Origin Resource Sharing)中,允許使用自定義的Headers,Methods和不同類型的請求內(nèi)容,這個是一個透明的服務(wù)器端驗證機(jī)制,這就叫預(yù)檢請求(Preflighted Requests)。
當(dāng)你想發(fā)起一個帶著高級選項的請求時,一個預(yù)檢請求首先會發(fā)生。這個預(yù)檢請求使用的方法是“OPTIONS”,包含了以下Headers:
Origin, Access-Control-Request-Method,,Access-Control-Request-Headers;
請求發(fā)起后,服務(wù)器響應(yīng)回復(fù)如下內(nèi)容決定是否處理此類請求。
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
一旦預(yù)檢請求發(fā)生,結(jié)果會被緩存(Access-Control-Max-Age)秒,下次就不會再請求了。
后記:
1,這種請求不需要手動設(shè)置什么,只要是符合條件的CORS,瀏覽器會自動發(fā)起。
2,這其實也會為了保護(hù)服務(wù)器,防止在請求時發(fā)生不必要的意外。