前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >解决 Laravel 项目跨域问题

解决 Laravel 项目跨域问题

作者头像
hedeqiang
发布2019-12-17 21:32:32
2.3K0
发布2019-12-17 21:32:32
举报
文章被收录于专栏:LaravelCodeLaravelCode

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 扩展包来解决跨域问题

安装

代码语言:javascript
复制
composer require barryvdh/laravel-cors

发布配置文件

代码语言:javascript
复制
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

代码语言:javascript
复制
protected $routeMiddleware = [
        .
        .
        .
        'cors' => \Barryvdh\Cors\HandleCors::class,
];

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

代码语言:javascript
复制
$api->version('v1', [
    'namespace' => 'App\Http\Controllers\Api',
    'middleware' => ['cors']
], function ($api) {...}

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

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

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装
  • 使用
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档