php跨域 预检,laravel 跨域,预检请求未通过

5b5a04b81f0f041f9ff34eaa72712873.png

梵蒂冈之花

问题已解决,原因是:

dingo/api 组件影响了原本的请求响应

解决思路:

从响应来看,返回的状态码是200,说明预检请求已经到达了服务器,只不过被服务器断否认掉了

这里我饶了很大个弯子,以为预检请求被否就意味着后端配置错误,所以一直在检查前后端的配置,但是都没起作用

吃个饭回来觉得还是从这个option请求入手,得先让他通过,尝试着单独写一个路由去匹配这个请求,并返回相应的请求头

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');

单独请求居然成功了。难道是自定义的中间除了问题?然后我单独在中间去做响应处理,结果没有得到响应

这说明在我这个路由中间件之前肯定发生了些什么,那就肯定只有dingo/api了

说来也巧,在看别人怎么解决laravel cros的时候,发现他们在使用一个barryvdh/laravel-cors的包,我原本想着如果我自定义的中间件不能用,只能借用它的啦。

在分析这个包的同时,我发现有使用者配置的时候提出一个坑,需要将这个包作为中间件写在dinggo/api的配置文件中,恍然大悟

答案:在dingo/api配置文件config/api.php中加入中间件

` 'middleware' => [

'crouss.request' => \App\Http\Middleware\EnableCrossRequestMiddleware::class,

],`

============================================================================这里介绍篇文档,阮一峰的跨域资源共享 CORS 详解,对跨域讲得非常透彻问题及答案仅作参考,希望对大家有点用^_^

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值