laravel php跨域请求,laravel开发中跨域的解决方案
前言
众所周知我们大家在用 laravel 进行开发的时候,特别是前后端完全分离的时候,由于前端项目运行在自己机器的指定端口(也可能是其他人的机器) , 例如 localhost:8000 , 而 laravel 程序又运行在另一个端口,这样就跨域了,而由于浏览器的同源策略,跨域请求是非法的。其实这个问题很好解决,只需要添加一个中间件就可以了。下面话不多说了,来随着小编一起看看详细的解决方案吧。
解决方案:
1、新建一个中间件
php artisan make:middleware EnableCrossRequestMiddleware
2、书写中间件内容
namespace App\Http\Middleware;
use Closure;
class EnableCrossRequestMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$response = $next($request);
$origin = $request->server('HTTP_ORIGIN') ? $request->server('HTTP_ORIGIN') : '';
$allow_origin = [
'http://localhost:8000',
];
if (in_array($origin, $allow_origin)) {
$response->header('Access-Control-Allow-Origin', $origin);
$response->header('Access-Control-Allow-Headers', 'Origin, Content-Type, Cookie, X-CSRF-TOKEN, Accept, Authorization, X-XSRF-TOKEN');
$response->header('Access-Control-Expose-Headers', 'Authorization, authenticated');
$response->header('Access-Control-Allow-Methods', 'GET, POST, PATCH, PUT, OPTIONS');
$response->header('Access-Control-Allow-Credentials', 'true');
}
return $response;
}
}
$allow_origin 数组变量就是你允许跨域的列表了,可自行修改。
3、然后在内核文件注册该中间件
protected $middleware = [
// more
App\Http\Middleware\EnableCrossRequestMiddleware::class,
];
在 App\Http\Kernel 类的 $middleware 属性添加,这里注册的中间件属于全局中间件。
然后你就会发现前端页面已经可以发送跨域请求了。
会多出一次 method 为 options 的请求是正常的,因为浏览器要先判断该服务器是否允许该跨域请求。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
laravel php跨域请求,laravel开发中跨域的解决方案相关推荐
- Ajax跨域请求,无法传递及接收cookie信息解决方案
Ajax跨域请求,无法传递及接收cookie信息解决方案 参考文章: (1)Ajax跨域请求,无法传递及接收cookie信息解决方案 (2)https://www.cnblogs.com/yalong ...
- python web开发中跨域问题的解决思路
python web开发中跨域问题的解决思路 参考文章: (1)python web开发中跨域问题的解决思路 (2)https://www.cnblogs.com/mqhpy/p/11445071.h ...
- laravel php跨域请求,Laravel 5.x设置跨域访问
做api接口的时候碰到个问题,跨域! 解决方法有很多,但是方便的依旧那么一两个,这里我就介绍我最会的就是以下这种 最方便的,新建一个middleWare,把这个middleware加入到全局中间件,所 ...
- Cors跨域(一):深入理解跨域请求概念及其根因
Talk is cheap. Show me the money. 前言 你好,我是YourBatman. 做Web开发的小伙伴对"跨域"定并不陌生,像狗皮膏药一样粘着几乎每位同学 ...
- Ajax----跨域请求
跨域请求:两个不同域名之间的通讯. Ajax受到浏览器的限制(安全性考虑)不允许跨域通信. <script> var req=new XMLHttpRequest(); req.open( ...
- node代理请求 vue_vue-cli项目开发/生产环境代理实现跨域请求+webpack配置开发/生产环境的接口地址...
使用 Vue-cli 创建的项目,开发地址是 localhost:8080,需要访问非本机上的接口http://10.1.0.34:8000/queryRole.不同域名之间的访问,需要跨域才能正确请 ...
- 利用Nginx轻松实现Ajax的跨域请求(前后端分离开发调试必备神技)
利用Nginx轻松实现浏览器中Ajax的跨域请求(前后端分离开发调试必备神技) 前言 为什么会出现跨域? 造成跨域问题的原因是因为浏览器受到同源策略的限制,也就是说js只能访问和操作自己域下的资源,不 ...
- 用springmvc 开发为 app 提供后台服务遇到跨域请求的问题
浏览器使用的chrome,安装了cors插件(开启允许跨域请求) 然后访问远程服务器提供的服务的时候,浏览器console 输出如下形式的错误信息: 问题1.OPTION: xxxxxx url地址 ...
- php 跨域 验证_php 前后端分离开发进行跨域请求时ajax发送验证参数token的header头解决方法...
php前后端分离开发中要实现前后端参数信息交互,必须解决token标识验证问题. 步骤如下: 1.前端ajax发送请求时,要设置一个自定义header头.代码如下: $.ajax({ url:&quo ...
最新文章
- 打印服务不能启动 print spooler服务停止
- 和平精英为什么找不到服务器,和平精英为什么登不上去 和平精英游戏登不上原因分析...
- DateTime格式化问题
- mac catalina删除系统多余文件 内存不足_macOS Catalina Patcher(如何在旧mac上安装Catalina系统)...
- 西南医科大学计算机应用基础历年真题,网络选修课-计算机应用基础-期末考.docx...
- 常用并发工具类(线程池)
- 上海市社会保险费缴费标准
- 《我也能做CTO之程序员职业规划》之六:灵商
- iOS 之NSOperation(一)
- TTL电平和CMOS电平的区别,详细分析他们的区别
- IMC IMV SecurityCenter连通
- 设计Instagram
- 中国5G SA核心网UDM
- 自动生成banner网站
- 最优化问题——线性规划模型
- php 鼠标 移动 手型,css各种手型集合(css禁止手型)
- Python周刊491期
- 3.5 基本属性测试
- 分享一道美美美团面试题!
- SSM+图书馆电子文件资源管理 毕业设计-附源码191614