请求的资源 laravel 5.8.8 上没有“Access-Control-Allow-Origin”标头

Posted

技术标签:

【中文标题】请求的资源 laravel 5.8.8 上没有“Access-Control-Allow-Origin”标头【英文标题】:No 'Access-Control-Allow-Origin' header is present on the requested resource laravel 5.8.8 【发布时间】:2019-10-07 17:07:44 【问题描述】:

我已经按照 github 存储库中的自述文件中的说明安装了 barryvdh/laravel-cors。我仍然在请求的资源错误中出现 No 'Access-Control-Allow-Origin' 标头。我正在使用 vue、axios 和 laravel 5.8.8

安装 barryvdh/laravel-cors 并在我的 api.php 文件中添加标题

我的 cors.php 文件是这样的

'supportsCredentials' => false,
    'allowedOrigins' => ['*'],
    'allowedOriginsPatterns' => [],
    'allowedHeaders' => ['Content-Type', 'X-Requested-With', 
                    'Origin','Authorization'],
    'allowedMethods' => ['*'],
    'exposedHeaders' => [],
    'maxAge' => 0,

在调试器工具中我得到以下内容

GENERAL
Request URL:http://localhost:8000/api/entriesoff
Request Method:OPTIONS
Status Code:200 OK
Remote Address:127.0.0.1:8000
Referrer Policy:no-referrer-when-downgrade
Response Headers
Allow:GET, POST, HEAD, CONNECT, PUT, DELETE, OPTIONS, PROPFIND, MKCOL
DAV:1
Request Headers
Provisional headers are shown
Access-Control-Request-Headers:x-csrf-token,x-requested-with
Access-Control-Request-Method:GET
Origin:http://127.0.0.1:8000
Referer:http://127.0.0.1:8000/

【问题讨论】:

PROPFIND, MKCOL 是非标准的。是否有任何东西拦截了响应发送后可能会对其进行修改? 调试器工具正在显示对 preflight OPTIONS 请求的响应,但错误消息显示“on the requested resource”......所以你应该而是查看后续 GET 请求的响应。 不发送后续的get请求。 如果您使用php artisan serve 运行您的服务器,您可能需要重新启动它。尝试运行 php artisan config:clear 看看是否可以解决任何问题。 既然你没提,你还记得添加到你的中间件吗? app/http/Kernel.php这个\Barryvdh\Cors\HandleCors::class 【参考方案1】:

我找到了解决方案。我在我的 axios URL 中添加了 index.php,例如 http://127.0.0.1:8000/index.php/api/...

【讨论】:

【参考方案2】:

你会使用

header('Access-Control-Allow-Origin: *');

header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS'); header('Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With');

而不是 barryvdh/laravel-cors

public/index.php 

上面

require __DIR__.'/../bootstrap/autoload.php';

样本:

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-With');
require __DIR__.'/../bootstrap/autoload.php';

【讨论】:

以上是关于请求的资源 laravel 5.8.8 上没有“Access-Control-Allow-Origin”标头的主要内容,如果未能解决你的问题,请参考以下文章

Laravel - 未找到 - 在此服务器上找不到请求的资源/控件

Laravel :: 在此服务器上找不到请求的资源 /hello

Laravel 修复请求的资源上不存在“Access-Control-Allow-Origin”标头

Laravel - 检查 Ajax 是不是请求

如何使用 Laravel 发出删除请求

没有 id 的 Laravel 资源路由销毁(DELETE)