1. 程式人生 > 其它 >介面一次請求會同時執行兩次

介面一次請求會同時執行兩次

因為在進行跨域請求的時候,前端會先options請求介面,去試探是否支援跨域,支援跨域之後,在進行正式的post請求新增。

解決方法:

(我的路由寫的是any 沒有請求限制,請求介面的時候post限制post請求 get限制get請求就行了)

請求做限制,options請求不執行介面功能。

if (strtolower($_SERVER['REQUEST_METHOD'] == 'options')){
	exit();
}

首先,跨域請求分為兩種,一種是簡單請求,即get請求和post請求(不帶多餘的請求頭),這種情況下,瀏覽器會直接請求,在有允許跨域的頭的情況下,予以顯示。(這裡並不是說沒有跨域頭伺服器就不返回資料了,資料是照常返回的,但是瀏覽器攔截了返回資料。)
另一種呢是複雜請求,即非get

post請求,或者是有了自定義頭的請求。這種情況下,瀏覽器會首先發送一個options請求(預請求),來確是否允許跨域。在伺服器返回的跨域條件都允許之後,瀏覽器才會傳送正式請求。

debug_backtrace() 列印棧軌跡

route:list 看了一下,有沒有 options 請求

php artisan route:list --method options