根据官方文档 https://www.workerman.net/doc/webman/middleware.html 创建了跨域中间件,但是只有 GET 请求生效,对于 POST 等需要预请求 OPTIONS 的情况,仍然报了跨域相关问题。经过论坛中大佬帖子们的经验结合实践,需要在路由中添加针对 OPTIONS 的路由,注意顺序:
// OPTIONS 路由放在最前面
Route::options('[{path:.+}]', function (){
return response('');
});
// 其它路由
// 关闭默认路由放在最后
Route::disableDefaultRoute();
另外,需要注意如果开了 https,但是通过 http 进行接口请求,预检请求可能会进行 307 跳转也会失败。
以上,分享出来,让需要的人少踩坑。
赞
我的理解如果你路由里写的是
意思是只接受post请求,遇到options预请求自然就无法跨域了,按照手册说的,需要跨域的路由应该用Route::any(..) 或者 Route::add(['POST', 'OPTIONS'], ..) ,就好了,这种情况用不到
这个配置。
反过来如果你路由里非要写死 Roue::post(),那是需要加上面这配置的
是的,不管哪种形式,必须路由里定义的有 options 相关请求。
赞
直接nginx 处理不就行了啊
+1