CORS'*'似乎不适用于Chrome,但适用于Postman

时间:2019-09-10 20:52:55

标签: javascript php laravel axios

我在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请求时,您会注意到标头已添加到响应中: header response POSTMAN

但是,对于Chrome来说,这似乎不起作用。查看从Google Chrome浏览器返回的标头(相同的请求,使用axios进行调用): Chrome header response

这会导致Google Chrome控制台出现以下错误:

  

从原点“ http://127.0.0.1:8000/auth/jwt/token”到“ http://localhost:3000”处对XMLHttpRequest的访问已被CORS策略阻止:对预检请求的响应未通过访问控制检查:否'Access-Control-Allow-来源的标头出现在请求的资源上。

我在做什么错/正在引起这个奇怪的问题?

2 个答案:

答案 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