首页
学习
活动
专区
工具
TVP
发布

Laravel 解决前后端跨域问题

一、nginx配置解决

解决前:

下图是没有处理前端请求报错图

解决中:

在nginx配置文件中添加以下命令

add_header Access-Control-Allow-Origin '*' always;add_header Access-Control-Allow-Headers "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With";add_header Access-Control-Expose-Headers "Authorization";add_header Access-Control-Allow-Methods "DELETE, GET, HEAD, POST, PUT, OPTIONS, TRACE, PATCH";if ($request_method = OPTIONS ) { return 200;}

添加后记得重启nginx服务

解决后:

通过下图可以看出请求成功了,Response Headers请求头也存在我们刚刚设置的值,所以这里就完成了,跨域请求。

二、代码解决

通常在大公司中,我们是没有办法接触到服务器的,那我们又应该要怎么配置跨域请求呢?

这里用的是laravel框架,我们在index.php入口文件中添加以下命令

header('Access-Control-Allow-Origin:*');header('Access-Control-Allow-Methods: GET,POST,PUT,DELETE,OPTIONS,PATCH');header('Access-Control-Allow-Headers:Origin, Content-Type, Cookie, Accept, X-CSRF-TOKEN,token,Authorization');header('Access-Control-Allow-Credentials:true');

现在就可以去请求了,可以看到请求成功了

三、Laravel中间件解决

我们知道laravel有中间件,现在我们添加一个处理跨域中间件,创建命令如下:

php artisan make:middleware CrossHttp

生成文件在app->Http->Middleware下

在CrossHttp.php 文件下的handle方法添加以下命令

header('Access-Control-Allow-Origin:*');header('Access-Control-Allow-Methods: GET,POST,PUT,DELETE,OPTIONS,PATCH');header('Access-Control-Allow-Headers:Origin, Content-Type, Cookie, Accept, X-CSRF-TOKEN,token,Authorization');header('Access-Control-Allow-Credentials:true');

还要在Kernel.php文件下的$middleware添加CrossHttp文件,实现全局跨域

现在就可以去请求了,可以看到请求成功了

以上三种方法都是可以解决跨域问题,大家还有什么比较好的方法也可以说出来一起分享呢

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200605A0IYY000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券