【发布时间】:2021-05-30 03:23:29
【问题描述】:
我的 API(使用 Laravel 8 框架构建)托管在一个子域 - webapi.somedomain.com 中。我正在运行使用 React 框架和 Axios 库为 HTTP 请求构建的本地版本的前端 UI。我在共享主机空间(cPanel + CentOS)中托管 我在访问托管 API 时遇到了问题。我已经说明了我在下面看到的错误:
Access to XMLHttpRequest at 'http://webapi.somedomain.com/api/authorization/signup' 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 中间件;使用php artisan config:cache 更新了文件并清除了缓存。没有成功。
找不到其他资源。所以我添加了 Laravel CORS 包 - fruitcake/laravel-cors。已安装、发布并添加到中间件;更新文件并清除缓存。但是当我从我的 React 项目中访问 API 时,我仍然看到了 CORS 错误
配置/cors.php:
'paths' => ['api/*'],
'allowed_methods' => ['*'],
'allowed_origins' => ['*'],
'allowed_origins_patterns' => [],
'allowed_headers' => ['*'],
'exposed_headers' => [],
'max_age' => 0,
'supports_credentials' => false,
内核.php:
protected $middleware = [
...
\Fruitcake\Cors\HandleCors::class,
];
我只是 Laravel 的初学者。我究竟做错了什么?有人可以帮我吗?提前致谢。
P.S.:我完全理解 CORS 是什么以及它是如何工作的。我是 Laravel 的新手。对开发并不陌生。我想知道我还应该做什么,以及我是否遗漏了什么。
【问题讨论】:
-
@AjeetShah 我知道 CORS 是什么。当托管在本地开发 XAMPP 服务器和 localhost:3000 中的 UI 中时,API 工作得非常好。当作为子域移动到服务器时,当它从 localhost:3000 被命中时它会失败。我不确定为什么会这样。这就是我添加问题的原因。
-
是的,没错。这就是为什么添加票并关闭它的原因:'D
-
你可以检查添加标题(“Access-Control-Allow-Origin:*”);到 index.php(在公共文件夹中)?仅用于测试。完全打开cors不是个好主意
-
@Viduranga 我试过了。相同的。 CORS 错误。
-
谢谢。我的问题现在已经解决了。这是因为目录中的 .htaccess 文件。它一直拒绝我来自所有域的请求。手动重新配置,问题就解决了。
标签: reactjs laravel cors laravel-8 laravel-api