cors 方式的跨域, 非简单请求,Laravel 如何回应预检?

cors方式的跨域, 非简单请求都会先有个options方式的预检请求, 路由里是没用匹配的options的,看样子laravel就直接200返回了。
关于cors的的返回头什么的我是知道, 站内有个laravel跨域的帖子,要定义一个中间件。
但是貌似options预检的时候到不了那里就返回了,不知道是怎么回事?现在我直接在routes/api.php文件里判断了一下 file, 有没有更好的方式解决啊,谢谢!

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 7
ruke

直接用web服务器来做跨域,nginx或apache

6年前 评论
ruke

@ruke laravel对options请求是做了处理的,但是lumen就没有了

6年前 评论

我现在也碰到这个问题,请问找到好的解决办法了吗

6年前 评论

@ruke 你是不是把 CORS 中间件放在 $middlewareGroupsapi 里面啦。如果这样的话,你没有在 api.php 定义对应 options 路由,那么就不会执行 api 数组里的中间件。解决的话可以把 Cors 中间件放在全局中间件 $middleware 里面。但是这样会导致 web.php 里面的接口也会支持跨域,这可能不是你想要的。可以考虑实现一个专门处理预检请求的中间件并把他放在全局中间件里面。

6年前 评论
ruke

@jyuan 服务器跨域也是可以针对path的吧, 只针对http(s):XXXX.com/api/*,因为我是直接用lumen来写api的,所以不存在这个问题

6年前 评论

@jyuan 解决了我的问题,十分感谢。

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!