Laravel 科尔斯·拉维尔·韦克斯
我正在尝试使用axios从VueJS到Laravel,这是我的API 我得到了这个错误: CORS策略已阻止从源站>“”访问位于“”的XMLHttpRequest:请求的资源上不存在“访问控制->允许源站”标头 未捕获(承诺中)错误:网络错误 在createError(createError.js?2d83:16) 位于XMLHttpRequest.handleError(xhr.js?b50d:87) 我曾尝试创建一个名为“cors”的中间件,但它不适合我,或者我做得很糟糕 奇怪的事?那是和邮递员一起工作的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”的中间件,但它不适合我,或者我做得很糟糕 奇怪的事?那是和邮
谢谢你的帮助!:) 您面临的问题是同一原产地政策。您可以在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服务器),如果它能帮助找到答案的话