Laravel 科尔斯·拉维尔·韦克斯

Laravel 科尔斯·拉维尔·韦克斯,laravel,vue.js,cors,axios,Laravel,Vue.js,Cors,Axios,我正在尝试使用axios从VueJS到Laravel,这是我的API 我得到了这个错误: CORS策略已阻止从源站>“”访问位于“”的XMLHttpRequest:请求的资源上不存在“访问控制->允许源站”标头 未捕获(承诺中)错误:网络错误 在createError(createError.js?2d83:16) 位于XMLHttpRequest.handleError(xhr.js?b50d:87) 我曾尝试创建一个名为“cors”的中间件,但它不适合我,或者我做得很糟糕 奇怪的事?那是和邮

我正在尝试使用axios从VueJS到Laravel,这是我的API

我得到了这个错误:

CORS策略已阻止从源站>“”访问位于“”的XMLHttpRequest:请求的资源上不存在“访问控制->允许源站”标头

未捕获(承诺中)错误:网络错误 在createError(createError.js?2d83:16) 位于XMLHttpRequest.handleError(xhr.js?b50d:87)

我曾尝试创建一个名为“cors”的中间件,但它不适合我,或者我做得很糟糕

奇怪的事?那是和邮递员一起工作的


谢谢你的帮助!:)

您面临的问题是同一原产地政策。您可以在Mozilla站点()上阅读。 它基本上是对web服务器的未经授权的访问。您可以更改web服务器的反应方式,我也可以在包含的链接中更改

服务器用于承载网页、应用程序、图像、字体和 更多。当您使用web浏览器时,您可能会尝试 访问不同的网站(托管在服务器上)。网站经常要求 这些托管资源来自服务器上的不同位置(服务器) 互联网服务器上的安全策略可降低相关风险 使用托管在不同服务器上的请求资产。让我们看一看 在安全策略的一个示例中:同源

同一原产地政策是非常严格的。在这项政策下 托管在服务器a上的文档(如网页)只能进行交互 与服务器A上的其他文档一起使用。简言之 同源策略强制执行与每个文档交互的文档 其他的有相同的起源


检查此库的Laravel用途。 安装很容易:

$ composer require barryvdh/laravel-cors
$ php artisan vendor:publish --provider="Barryvdh\Cors\ServiceProvider"
默认设置在
config/cors.php

return [
     /*
     |--------------------------------------------------------------------------
     | Laravel CORS
     |--------------------------------------------------------------------------
     |
     | allowedOrigins, allowedHeaders and allowedMethods can be set to array('*')
     | to accept any value.
     |
     */
    'supportsCredentials' => false,
    'allowedOrigins' => ['*'],
    'allowedHeaders' => ['Content-Type', 'X-Requested-With'],
    'allowedMethods' => ['*'], // ex: ['GET', 'POST', 'PUT',  'DELETE']
    'exposedHeaders' => [],
    'maxAge' => 0,
];
allowedOrigins、allowedHeaders
allowedMethods
可以设置为
array('*')
以接受任何值

要允许所有路由使用CORS,请在
app/Http/Kernel.php
类的
$middleware
属性中添加HandleCors中间件:

protected $middleware = [
    // ...
    \Barryvdh\Cors\HandleCors::class,
];
如果要允许特定中间件组或路由上的CORS,请将HandleCors中间件添加到您的组中:

protected $middlewareGroups = [
    'web' => [
       // ...
    ],

    'api' => [
        // ...
        \Barryvdh\Cors\HandleCors::class,
    ],
];

如果有新人来这里帮助我,我会提供更多细节

我使用Laragon作为本地服务,它使用Apache。 我试图修改httpd.conf,但它没有改变任何东西

当我将URI放入导航器时,它正在工作,例如:

返回正确的json

我的错误改变了:

CORS策略已阻止从源“”访问“”处的XMLHttpRequest:“Access Control Allow origin”标头包含多个值“*,”,但只允许一个值

重新编辑,它正在工作。
我已经删除了cors中间件,并将设置访问控制允许源代码放在httpd.conf中

您是否尝试了第二个答案?我没有任何名为routes.php的文件,但我在api\vendor\symfony\routing\Route.php和\api\routes\api.php上尝试过,我做得不对吗?@J.Doe从不在
vendor
中编辑任何内容
api/routes/api.php
是要编辑的文件-Laravel以前在
routes.php
中包含所有路由,但它没有拆分为web和api版本。您是否使用
vue cli
?您好,我已经尝试过了,但它仍然不起作用。。。我使用Laragon作为本地服务器(所以它是Apache服务器),如果它能帮助找到答案的话