根據(jù)官方文檔 http://wtbis.cn/doc/webman/middleware.html 創(chuàng)建了跨域中間件,但是只有 GET 請求生效,對(duì)于 POST 等需要預(yù)請求 OPTIONS 的情況,仍然報(bào)了跨域相關(guān)問題。經(jīng)過論壇中大佬帖子們的經(jīng)驗(yàn)結(jié)合實(shí)踐,需要在路由中添加針對(duì) OPTIONS 的路由,注意順序:
// OPTIONS 路由放在最前面
Route::options('[{path:.+}]', function (){
return response('');
});
// 其它路由
// 關(guān)閉默認(rèn)路由放在最后
Route::disableDefaultRoute();
另外,需要注意如果開了 https,但是通過 http 進(jìn)行接口請求,預(yù)檢請求可能會(huì)進(jìn)行 307 跳轉(zhuǎn)也會(huì)失敗。
以上,分享出來,讓需要的人少踩坑。
我的理解如果你路由里寫的是
Route::post(...);
意思是只接受post請求,遇到options預(yù)請求自然就無法跨域了,按照手冊說的,需要跨域的路由應(yīng)該用Route::any(..) 或者 Route::add(['POST', 'OPTIONS'], ..) ,就好了,這種情況用不到
Route::options('[{path:.+}]', function (){
return response('');
});
這個(gè)配置。
反過來如果你路由里非要寫死 Roue::post(),那是需要加上面這配置的
贊