解决 Laravel 项目跨域问题

Access to XMLHttpRequest at 'http://youji.teavels.test/api/travels/show' from origin 'http://127.0.0.1:8848' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

很多人应该会遇到以上问题吧?其实说白了就是跨域。

跨域问题、这是一种反很常见的问题、当然解决方式也有很多、我们使用 Laravel 开发的项目处理起来就更简单了。假设我们的项目是采用 dingo/api 来处理 API 的。那么我们可以使用 barryvdh/laravel-cors 扩展包来解决跨域问题

安装

composer require barryvdh/laravel-cors

发布配置文件

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

使用

扩展包的使用是非常简单的,我们在需要的地方增加中间件即可。

如果需要全局使用,可以在 app/Http/Kernel.php$middleware 中增加\Barryvdh\Cors\HandleCors::class,假如我们只有接口部分设计到 CORS 问题,我们只添加到 API 相关的路由中。

因为我们使用了DingoApi,路由部分被接管了,所以需要去 routes/api.php 中单独设置中间件。

首先需要设置一下该中间件的别名,方便使用: 修改 app/Http/Kernel.php

protected $routeMiddleware = [
        .
        .
        .
        'cors' => \Barryvdh\Cors\HandleCors::class,
];

接下来只需要在 routes/api.php 中增加该中间件即可:

$api->version('v1', [
    'namespace' => 'App\Http\Controllers\Api',
    'middleware' => ['cors']
], function ($api) {...}

基于以上配置即可轻松解决跨域问题.

更多信息、请参考 barryvdh/laravel-cors

关于极客返利

极客返利 是由我个人开发的一款网课返利、返现平台。包含 极客时间返现、拉勾教育返现、掘金小册返现、GitChat返现。目前仅包含这几个平台。后续如果有需要可以考虑其他平台。 简而言之就是:你买课,我返现。让你花更少的钱,就可以买到课程。

https://geek.laravelcode.cn

https://geek.idaka.ink

版权许可
本作品采用 知识共享署名 4.0 国际许可协议 进行许可。

转载无需与我联系,但须注明出处,注明文章来源 解决 Laravel 项目跨域问题

联系我
编程怪事
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值