我在 Laravel 中为我的项目创建了一个自定义中间件。它添加了以下 header :
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 来说似乎工作得很好。当我通过 Postman 触发 POST 请求时,您会注意到 header 已添加到响应中:
但是,对于 Chrome 来说这似乎不起作用。查看从 Google Chrome 返回的 header (相同的请求,使用 axios 进行调用):
这会导致 Google Chrome 控制台出现以下错误:
Access to XMLHttpRequest at 'http://127.0.0.1:8000/auth/jwt/token' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
我做错了什么/导致了这个奇怪的问题?
最佳答案
我强烈建议使用Laravel CORS Package,而不是创建自定义Laravel中间件。 。无需重新发明轮子。
关于javascript - CORS '*' 似乎不适用于 Chrome,但适用于 Postman,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57878075/