在开始之前,我想说我搜索并尝试了很多方法,但似乎没有一个能正常工作。我还创建了一个新的 Laravel 安装,但仍然没有成功。
问题是 CORS,我总是被 CORS 阻止。
Laravel Valet.https://sanctum.testhttps://nuxt.sanctum.test这是全新安装。
我的.env文件具有所需的设置:
SESSION_DOMAIN=.sanctum.test
SANCTUM_STATEFUL_DOMAINS=sanctum.test,nuxt.sanctum.test
Run Code Online (Sandbox Code Playgroud)
我的cors.php有所需的设置:
SESSION_DOMAIN=.sanctum.test
SANCTUM_STATEFUL_DOMAINS=sanctum.test,nuxt.sanctum.test
Run Code Online (Sandbox Code Playgroud)
我的Http/Kernel.php
...
'supports_credentials' => true,
...
Run Code Online (Sandbox Code Playgroud)
我的 NuxtJs 应用程序在 http://localhost:3000 上运行,并且我有一个 Laravel Valet 反向代理,因此我可以从中访问它,https://nuxt.sanctum.test并且我可以确认它是否按预期工作。
这是我的nuxt.config.js:
...
'api' => [
EnsureFrontendRequestsAreStateful::class,
'throttle:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
];
Run Code Online (Sandbox Code Playgroud)
现在,无论我做什么,我总是从 Laravel 应用程序中收到相同的错误:
Access to XMLHttpRequest at 'https://sanctum.test/sanctum/csrf-cookie' from origin 'https://nuxt.sanctum.test.test' 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.
Run Code Online (Sandbox Code Playgroud)
正如您在上面看到的,请求是从子域发送到主域的。正如我上面所表明的,这SANCTUM_STATEFUL_DOMAINS是正确的。
经过一夜的睡眠发现问题!
我缺少config/cors.php附加端点的配置:
<?php
return [
'paths' => ['api/*', 'sanctum/*', 'login', 'logout'],
'allowed_methods' => ['*'],
'allowed_origins' => ['*'],
'allowed_origins_patterns' => [],
'allowed_headers' => ['*'],
'exposed_headers' => [],
'max_age' => 0,
'supports_credentials' => true,
];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3847 次 |
| 最近记录: |