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

标签 javascript php laravel axios

我在 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 已添加到响应中: header response POSTMAN

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

这会导致 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/

相关文章:

javascript - 通过 Ajax 动态加载时多个脚本之间的可见性

javascript - 如何将点击事件与尚未上传的事件链接

javascript - 如何在 Typescript 的 Angular 指令类中添加 Controller

php - 无法运行 php artisan 测试

php - 为什么在 Laravel 5.x 中弃用了 Form 和 HTML 助手?

mysql - SQLSTATE[HY000] : General error: 1030 Got error 168 when running migrations

javascript - 如何模拟或调用基本的 javascript 函数?

PHP 命名空间 - 如果声明 Parent\Child,为什么我必须 "use {Parent}"?

php - 读取包含文件会减慢 php 脚本加载速度吗?

php - 如何通过检查ajax或php中的文本框值来更新数据库值