瀏覽器跨域會發(fā)生兩個請求 一個OPTIONS預(yù)請求 如果設(shè)置的只有post路由 路由里面找不到OPTIONS路由就會直接返回404 或者回退到Route::fallback() 不會調(diào)用跨域中間件 造成跨域失敗
經(jīng)實驗:設(shè)置any路由能正??缬?我路由都是根據(jù)不同的method實現(xiàn)不同的功能 沒辦法都用any路由 這個怎么處理???
文檔寫了
跨域可能會產(chǎn)生OPTIONS請求,我們不想OPTIONS請求進入到控制器,所以我們?yōu)镺PTIONS請求直接返回了一個空的響應(yīng)(response(''))實現(xiàn)請求攔截。
如果你的接口需要設(shè)置路由,請使用Route::any(..) 或者 Route::add(['POST', 'OPTIONS'], ..)設(shè)置。
是不是配置了fallback
fallback不走中間件
你可以在fallback里面配置跨域返回
Route::fallback(function (Request $request) {
$response = strtoupper($request->method()) === 'OPTIONS' ? response('', 204) : response('', 404);
$response->withHeaders([
'Access-Control-Allow-Credentials' => 'true',
'Access-Control-Allow-Origin' => "*",
'Access-Control-Allow-Methods' => '*',
'Access-Control-Allow-Headers' => '*',
]);
return $response;
});