我在Laravel中为我的项目创建了一个自定义中间件。它添加了以下标头:
return $next($request)
->header('Access-Control-Allow-Origin', '*')
->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS')
->header('Access-Control-Allow-Headers',' Origin, Content-Type, Accept, Authorization, X-Request-With')
->header('Access-Control-Allow-Credentials',' true');
中间件对于Postman似乎很好用。当我通过邮递员触发POST请求时,您会注意到标头已添加到响应中:
但是,对于Chrome来说,这似乎不起作用。查看从Google Chrome浏览器返回的标头(相同的请求,使用axios进行调用):
这会导致Google Chrome控制台出现以下错误:
从原点“ http://127.0.0.1:8000/auth/jwt/token”到“ http://localhost:3000”处对XMLHttpRequest的访问已被CORS策略阻止:对预检请求的响应未通过访问控制检查:否'Access-Control-Allow-来源的标头出现在请求的资源上。
我在做什么错/正在引起这个奇怪的问题?
答案 0 :(得分:3)
我强烈建议您使用Laravel CORS Package,而不是创建自定义的Laravel中间件。无需重新发明轮子。
答案 1 :(得分:1)
只需在文件的顶部放置一个带有die()的类似脚本即可。
Error:(49, 25) java: variable ship is already defined in method main(java.lang.String[])
如果您可以翻译成laravel,那就更好了。实现示例位于here。