laravel 项目前后端分离处理跨域cors问题

最近开发的一个项目,前端用到vue,后端使用laravel写接口。在接入后端接口的时候出现一个很奇葩的错误:No 'Access-Control-Allow-Origin' header is present on the requested,下面我们来记录一下解决办法。

这个报错的原因是前端域名和后端接口域名不一致,所以形成了跨域请求的情况,如果后端没有设置cors允许前端访问,这个请求是走不通的。

解决办法:

使用 laravel-cors 扩展包

安装

composer require barryvdh/laravel-cors

直接加入到全局中间件

protected $middleware = [
    // ...
    \Barryvdh\Cors\HandleCors::class,
];

导出配置

php artisan vendor:publish --provider="Barryvdh\Cors\ServiceProvider"

配置的时候有两点注意事项:

  1. 如果有使用自定义 header,比如 X-Auth-Token 或者 X-Requested-With,则必须在 allowedHeader 中包含这些自定义的 header,当然也可以直接使用 [*] 来 allow 所有的 header
  2. 如果有白名单或者确定的允许访问的域名列表,则需要在 Origin 中进行相关的配置。

评论

(= ̄ω ̄=)··· 暂无内容!

回复

您还未登录,请先登录或者注册