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

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

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 7
ruke

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

7年前 评论
ruke

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

7年前 评论

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

7年前 评论

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

7年前 评论
ruke

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

7年前 评论

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

5年前 评论