我們都知道cors請求分類兩類:簡單請求get,post,option;其他是復雜請求。 詳情查看 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS
場景:很多時候發送一個post請求,結果卻顯示兩個請求(一個option請求,一個post請求)
一、什么是options請求
OPTIONS請求即預檢請求,用來檢測服務器允許的http方法。
總共會發送兩次請求。當發起跨域請求時,出於安全考慮,達到一定條件,會觸發瀏覽器在正式請求之前,自動先發起OPTIONS請求,也就是第一次請求。
服務器若接受此次跨域請求,那么當options請求成功返回后,瀏覽器繼續發起第二次請求,也就是真正的ajax請求。
二、跨域請求觸發的條件
1、http方法:PUT/DELETE/CONNECT/OPTIONS/TRACE/PATCH
2、首部字段除以下字段:Accept/Accept-Language/Content-Language/Content-Type/DPR/Downlink/Save-Data/Viewport-Width/Width
3、Content-Type除以下字段:application/x-www-form-urlencoded、multipart/form-data、text/plain
注:通常是content-type: application/json
Access-Control-Request-Method:該字段是必須的,用來列出瀏覽器的CORS請求會用到哪些HTTP方法。
Access-Control-Request-Headers:該字段是一個逗號分隔的字符串,指定瀏覽器CORS請求會額外發送的頭信息字段。
一旦服務器通過了"預檢"請求,以后每次瀏覽器正常的CORS請求,就都跟簡單請求一樣,會有一個Origin頭信息字段。
預檢,返回響應頭,沒返回實體內容