preflight request預檢請求


preflight request預檢請求,負責檢查是否允許跨域請求,但是注意並不是所有的跨域請求都會發送preflight請求。對與那些冪等的請求,如GET請求,就不會發送preflight請求。只有那些會改變服務器狀態的請求才可能發送preflight請求,如果POST、DELETE和PUT請求。

 

preflight請求是一個OPTIONS請求,由瀏覽器自動發送,前端開發者不會意識到它的存在。preflight請求必須有這三個請求頭Access-Control-Request-Method、Access-Control-Request-Headers和Origin,然后服務器決定是否允許指定的請求方法、請求頭和來源。

 

例如,客戶端詢問服務端是否支持DELET請求,在發送DELET請求之前,通過使用一個preflight請求

OPTIONS /resource/foo 
Access-Control-Request-Method: DELETE 
Access-Control-Request-Headers: origin, x-requested-with
Origin: https://foo.bar.org  

如果服務允許DELETE請求,然后響應一個Access-Control-Request-Method,其中包含DELETE

HTTP/1.1 204 No Content
Connection: keep-alive
Access-Control-Allow-Origin: https://foo.bar.org
Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE
Access-Control-Max-Age: 86400

預檢請求也可以使用緩存,上面的響應就使用Access-Control-Max-Age頭設置緩存時間。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM