2 回答

TA貢獻(xiàn)1900條經(jīng)驗(yàn) 獲得超5個(gè)贊
問(wèn)題已解決,原因是:
dingo/api 組件影響了原本的請(qǐng)求響應(yīng)
解決思路:
從響應(yīng)來(lái)看,返回的狀態(tài)碼是200,說(shuō)明
預(yù)檢請(qǐng)求
已經(jīng)到達(dá)了服務(wù)器,只不過(guò)被服務(wù)器斷否認(rèn)掉了這里我饒了很大個(gè)彎子,以為
預(yù)檢請(qǐng)求
被否就意味著后端配置錯(cuò)誤,所以一直在檢查前后端的配置,但是都沒(méi)起作用吃個(gè)飯回來(lái)覺(jué)得還是從這個(gè)option請(qǐng)求入手,得先讓他通過(guò),嘗試著單獨(dú)寫(xiě)一個(gè)路由去匹配這個(gè)請(qǐng)求,并返回相應(yīng)的請(qǐng)求頭
Route::options('api/user/12',function(){ ????return?response('ok') ?????????????????????->header('Access-Control-Allow-Methods','POST,?GET,?OPTIONS,?PUT,?????????DELETE') ?????????????????????->header('Access-Control-Allow-Headers','Content-Type,?X-Auth-Token,?Origin'); })->middleware('crouss.request');
單獨(dú)請(qǐng)求居然成功了。難道是自定義的中間除了問(wèn)題?然后我單獨(dú)在中間去做響應(yīng)處理,結(jié)果沒(méi)有得到響應(yīng)
這說(shuō)明在我這個(gè)路由中間件之前肯定發(fā)生了些什么,那就肯定只有dingo/api了
說(shuō)來(lái)也巧,在看別人怎么解決laravel cros的時(shí)候,發(fā)現(xiàn)他們?cè)谑褂靡粋€(gè)
barryvdh/laravel-cors
的包,我原本想著如果我自定義的中間件不能用,只能借用它的啦。在分析這個(gè)包的同時(shí),我發(fā)現(xiàn)有使用者配置的時(shí)候提出一個(gè)坑,需要將這個(gè)包作為中間件寫(xiě)在dinggo/api的配置文件中,恍然大悟
答案:在dingo/api配置文件config/api.php中加入中間件
` 'middleware' => [
????'crouss.request'?=>?\App\Http\Middleware\EnableCrossRequestMiddleware::class, ??],`
===========================================================

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個(gè)贊
我之前也遇到過(guò),google了很多。
自定義middleware是沒(méi)辦法解決的,你要把他寫(xiě)在routes/api.php或routes/web.php的頭部才可以。

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超4個(gè)贊
查看laravel-cors的包的源碼就發(fā)現(xiàn)了,哪里有$response->header方法?是$response->headers->set吧
- 2 回答
- 0 關(guān)注
- 621 瀏覽
添加回答
舉報(bào)