当前位置: 首页 > 编程日记 > 正文

Laravel开启跨域的方法


1、建立中间件Cors.php 
命令:php artisan make:middleware Cors 
/app/Http/Middleware/ 目录下会出现一个Cors.php 文件。

内容如下:

<?phpnamespace App\Http\Middleware;use Closure;class Cors
{/*** Handle an incoming request.** @param  \Illuminate\Http\Request  $request* @param  \Closure  $next* @return mixed*/public function handle($request, Closure $next){$response = $next($request);$response->header('Access-Control-Allow-Origin', '*');$response->header('Access-Control-Allow-Headers', 'Origin, Content-Type, Cookie, Accept, multipart/form-data, application/json');$response->header('Access-Control-Allow-Methods', 'GET, POST, PATCH, PUT, OPTIONS');$response->header('Access-Control-Allow-Credentials', 'false');return $response;}
}

其中有以下需要注意的地方:

  • 对于跨域访问并需要伴随认证信息的请求,需要在 XMLHttpRequest 实例中指定 withCredentials 为 true。
  • 这个中间件你可以根据自己的需求进行构建,如果需要在请求中伴随认证信息(包含 cookie,session)那么你就需要指定 Access-Control-Allow-Credentials 为 true, 因为对于预请求来说如果你未指定该响应头,那么浏览器会直接忽略该响应。
  • 在响应中指定 Access-Control-Allow-Credentials 为 true 时,Access-Control-Allow-Origin 不能指定为 *(这个一定要注意,我就是在这个地方调了好久)
  • 后置中间件只有在正常响应时才会被追加响应头,而如果出现异常,这时响应是不会经过中间件的。

2、在 Kernel.php文件中的$middleware中加入刚刚添加的中间件:\App\Http\Middleware\Cors::class, 

protected $middleware = [\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,\App\Http\Middleware\EncryptCookies::class,\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,\Illuminate\Session\Middleware\StartSession::class,\Illuminate\View\Middleware\ShareErrorsFromSession::class,\App\Http\Middleware\Cors::class,];

跨源资源共享标准

跨源资源共享标准通过新增一系列 HTTP 头,让服务器能声明哪些来源可以通过浏览器访问该服务器上的资源。另外,对哪些会对服务器数据造成破坏性响应的 HTTP 请求方法(特别是 GET 以外的 HTTP 方法,或者搭配某些 MIME 类型的 POST 请求),标准强烈要求浏览器必须先以 OPTIONS 请求方式发送一个预请求(preflight request),从而获取知服务器端对跨源请求所支持 HTTP 方法。在确认服务器允许跨源请求的情况下,以实际的 HTTP 请求方法发送那个真正的请求。服务器端也可以通知客户端,是不是需要随同请求一起发送信用信息(包括 Cookies 和 HTTP 认证相关数据)。

跨源共享标准需要浏览器和服务端共同配合才能完成,目前浏览器厂商已经可以将请求部分自动完成,所以跨源资源访问的重点还是在于服务器端。

下面列出一些标准中可用的响应头和请求头。

Response Header

Access-Control-Allow-Origin : 指明哪些请求源被允许访问资源,值可以为 “*”,”null”,或者单个源地址。

Access-Control-Allow-Credentials : 指明当请求中省略 creadentials 标识时响应是否暴露。对于预请求来说,它表明实际的请求中可以包含用户凭证。

Access-Control-Expose-Headers : 指明哪些头信息可以安全的暴露给 CORS API 规范的 API。

Access-Control-Max-Age : 指明预请求可以在预请求缓存中存放多久。

Access-Control-Allow-Methods : 对于预请求来说,哪些请求方式可以用于实际的请求。

Access-Control-Allow-Headers : 对于预请求来说,指明了哪些头信息可以用于实际的请求中。

Origin : 指明预请求或者跨域请求的来源。

Access-Control-Request-Method : 对于预请求来说,指明哪些预请求中的请求方式可以被用在实际的请求中。

Access-Control-Request-Headers : 指明预请求中的哪些头信息可以用于实际的请求中。

Request Header

Origin : 表明发送请求或预请求的来源。

Access-Control-Request-Method : 在发送预请求时带该请求头,表明实际的请求将使用的请求方式。

Access-Control-Request-Headers : 在发送预请求时带有该请求头,表明实际的请求将携带的请求头。

转自:https://blog.csdn.net/leedaning/article/details/53787008

转载于:https://www.cnblogs.com/lamp01/p/8892001.html

相关文章:

【组队学习】【33期】动手学数据分析

动手学数据分析 航路开辟者&#xff1a;陈安东、金娟娟、杨佳达、老表、李玲、张文涛、高立业领航员&#xff1a;张文恺航海士&#xff1a;武帅、戴治旭、初晓宇 基本信息 内容属性&#xff1a;精品入门课系列开源内容&#xff1a;https://github.com/datawhalechina/hands-…

LL(1)预测分析表的构造

LL(1)分析法&#xff08;即预测分析法&#xff09;是自上而下文法中的一种&#xff0c;使用这种方法需要用到LL(1)预测分析表。 前提&#xff1a;掌握了FIRST集和FOLLOW集的构造。 步骤&#xff1a;对于每一个产生式A→α &#xff08;1&#xff09; 对每个终结符a∈FIRST(α)…

新的sublime text已经上传网盘,地址写在下面

注&#xff1a;新网盘地址&#xff0c;之前的关于sublime text的网盘地址已效 网盘地址&#xff1a;http://pan.baidu.com/s/1oVHAm 压缩文件结构 从上到下依次是&#xff1a; 1.sublime text3 32bit便携版本的压缩包&#xff0c;解压可用. 64bit的用户可以将&#xff1a;http:…

WebAssembly Studio:Mozilla提供的WASM工具

\看新闻很累&#xff1f;看技术新闻更累&#xff1f;试试下载InfoQ手机客户端&#xff0c;每天上下班路上听新闻&#xff0c;有趣还有料&#xff01;\\\WebAssembly Studio是Mozilla开发的一款在线工具&#xff0c;用于将C/C和Rust代码编译为WASM格式。\\WebAssembly Studio是M…

【组队学习】【33期】3. 李宏毅机器学习(含深度学习)

李宏毅机器学习&#xff08;含深度学习&#xff09; 航路开辟者&#xff1a;王茂霖、陈安东&#xff0c;刘峥嵘&#xff0c;李玲领航员&#xff1a;宋泽山航海士&#xff1a;汪健麟、叶梁 基本信息 开源内容&#xff1a;https://github.com/datawhalechina/leeml-notes开源内…

Linux 引导和系统启动

bootstrap 引导程序;鞋带 -> 简称 boot 启动 pull oneself up by one’s bootstraps.&#xff08;体现计算机系统启动的难处&#xff09; Linux系统启动分为两大部分&#xff1a; 一&#xff0e; 第一部分&#xff1a;机器启动&#xff08;BIOS到 加载内核 &#xff0c;…

【数据结构】支持四则混合运算的计算器(转)

1.给出两个数&#xff0c;用户再指定操作符&#xff0c;要求计算结果&#xff0c;这实现起来很容易&#xff1b; 2.多个数&#xff0c;但只涉及同一优先级的操作符&#xff0c;做起来也很容易&#xff1b; 3.多个数&#xff0c;不同优先级的操作符&#xff0c;怎么办呢&#xf…

TypeScript学习笔记之 接口(Interface)

在java中&#xff0c;接口是用来定义一些规范&#xff0c;使用这些接口&#xff0c;就必须实现接口中的方法&#xff0c;而且接口中的属性必须是常量。javascript中是没有接口的概念的。所以TypeScript在编译成 JavaScript 的时候&#xff0c;所有的接口都会被擦除掉。 而TypeS…

【组队学习】【33期】数据可视化(Matplotlib)

数据可视化&#xff08;Matplotlib&#xff09; 航路开辟者&#xff1a;杨剑砺、杨煜、耿远昊、李运佳、居凤霞领航员&#xff1a;王森航海士&#xff1a;肖明远、郭棉昇 基本信息 开源内容&#xff1a;https://github.com/datawhalechina/fantastic-matplotlib开源内容&…

布尔定理及证明(完整版)

这篇文章的目的是以布尔代数公理证明定理。 对偶原理&#xff1a;0with1, with 互换以后&#xff0c;公理&#xff08;定理&#xff09;任然成立。 布尔代数的公理如下 单变量的布尔代数定理如下 单变量的布尔代数定理很容易用真值表证明。 多变量的布尔定理如下 交换律&…

创建DLL动态链接库——声明导出法

DLL声明导出法&#xff1a;是通过使用__declspec(dllexport)&#xff0c;添加到需要导出的函数前&#xff0c;进行声明。 头文件定义如下(OPdll.h)&#xff1a; 源文件定义如下(OPdll.cpp)&#xff1a; 通过以上两个文件&#xff0c;编译过后即可生成OPdll.lib和OPdll.dll两个库…

【组队学习】【33期】Scratch(一级)

Scratch一级 航路开辟者&#xff1a;王思齐、马燕鹏领航员&#xff1a;马燕鹏航海士&#xff1a;马燕鹏 基本信息 开源内容&#xff1a;https://github.com/datawhalechina/team-learning-program/tree/master/Scratch内容属性&#xff1a;公测课程内容说明&#xff1a;抽取…

Bzoj2780: [Spoj]8093 Sevenk Love Oimaster

题目 传送门 Sol 就是广义\(sam\) 然后记录下每个状态属于哪些串&#xff0c;开\(set\)维护\(parent\)树上启发式合并一下就好了 # include <bits/stdc.h> # define RG register # define IL inline # define Fill(a, b) memset(a, b, sizeof(a)) using namespace std; t…

LR分析法从理解到运用

1、 LR分析器 解释&#xff1a; 分析栈包括符号栈和相应状态栈 分析表包括ACTION表和GOTO表 Ⅰ动作表元素action[Si,aj] 表示当前栈顶状态为S&#xff0c;输入符号为a时所执行的动作。有四种情况&#xff1a;S(移进)&#xff0c;r(归约)&#xff0c;acc(接受)&#xff0c;erro…

Android 判断SD卡是否存在及容量查询

转载&#xff1a;http://blog.csdn.net/xinzheng_wang/article/details/7827775 Android 判断SD卡是否存在及容量查询的简单方法如下&#xff1a;首先要在AndroidManifest.xml中增加SD卡访问权限 [html] view plaincopy <!-- 在SDCard中创建与删除文件权限 --> <uses…

Spring Boot 教程(三): Spring Boot 整合Mybatis

教程简介 本项目内容为Spring Boot教程样例。目的是通过学习本系列教程&#xff0c;读者可以从0到1掌握spring boot的知识&#xff0c;并且可以运用到项目中。如您觉得该项目对您有用&#xff0c;欢迎点击收藏和点赞按钮&#xff0c;给予支持&#xff01;&#xff01;教程连载中…

电子学会 软件编程(图形化)一级训练营

「青少年编程竞赛交流群」已成立&#xff08;适合6至18周岁的青少年&#xff09;&#xff0c;公众号后台回复【Scratch】或【Python】&#xff0c;即可进入。如果加入了之前的社群不需要重复加入。 电子学会 软件编程&#xff08;图形化&#xff09;一级训练营 试题来源 青少…

win10 安装 python报错-已安装这个产品的另一版本

尝试清理干净电脑上关于之前安装的Python3&#xff0c;在 输入winR 输入cmd 回车 输入 python 回车 却看到 C:\Users\86136>python ‘python’ 不是内部或外部命令&#xff0c;也不是可运行的程序 或批处理文件。 但是再安装&#xff0c;又报出严重错误。 最终解决方案&am…

POJ1276Cash Machine

http://poj.org/problem?id1276 题意 &#xff1a; 给你一个目标钱数&#xff0c;再给你钱币的种数和钱币的面值&#xff0c;让你用这些钱凑出不大于目标钱数的钱然后输出这个最接近且不大于目标钱数的钱。 思路 &#xff1a; 背包问题&#xff0c;还是多重背包&#xff0c;就…

Python中处理时间 —— time模块

time模块 逝去的秒数 逝去的秒数表示从某个时间&#xff08;Python中是“Thu Jan 1 07:00:00 1970”&#xff09;开始到现在所经过的秒数。 使用 time.time() 函数可以获得逝去的秒数&#xff1a; >>time.time() 1388330058.8643time.time()返回一个浮点数&#xff0c;可…

学编程必看:逻辑思维测试

2021.09 电子学会图形化一级考试有这样的一个题目&#xff1a; 如下图所示&#xff0c;井深7米&#xff0c;有个蜗牛从井底往上爬&#xff0c;白天爬3米&#xff0c;晚上往下坠2米&#xff0c;问蜗牛几天能从井里爬出来&#xff1f;&#xff08; &#xff09; A. 4B. 5C. 6D. …

explicit specialization of ‘Race‘ after instantiation ,implicit instantiation first required here。

报错1&#xff1a; E:\project\qt\Pokemon3\PokemonServer\pokemon.cpp:470: error: specialization of ‘Race::Race() [with int N 0]’ after instantiation Race<0>::Race() : PokemonBase(ATK) ^ 报错2&#xff1a; explicit specialization of ‘Race’ after ins…

(转载)Linux usbtouchscreen驱动分析

在Linux内核中自带USB触摸屏驱动&#xff0c;以linux-2.6.33.3\drivers\input\touchscreen.c为例&#xff0c;进行解析&#xff1a; 1.驱动加载&#xff1a; static int __init usbtouch_init(void){return usb_register(&usbtouch_driver); //驱动注册} 其中usbtouch_dr…

关于事务隔离级别

2019独角兽企业重金招聘Python工程师标准>>> 第一种 read uncommitted 此状态下脏读&#xff0c;不可重复读&#xff0c;虚读都有可能发生。此状态下两个人同时操作一个数据库表一边开启事务没有提交&#xff0c;另一边也开启事物开始更改数据但是也没有提交&#x…

Datawhale组队学习周报(第047周)

本周报总结了从 2021年01月03日至2022年01月09日&#xff0c;Datawhale组队学习的运行情况&#xff0c;我们一直秉承“与学习者一起成长的理念”&#xff0c;希望这个活动能够让更多的学习者受益。 第 32 期组队学习一共 11 门开源课程&#xff0c;共组建了 11 个学习群&#…

讲座记录:从码农到架构师(精简版)

1.框架学习 不要过于在乎细节 学封装思想 不追新 否则太累 每个框架的设计理念不同 spring 比structs 优秀在哪&#xff1f; 关注增量而非全量 2.如何快速学习一门新技术 “新框架的产生速度远大于个人的学习速度” 先快速学习:了解模板&#xff0c;套路-重复出现的代码 类似做…

Enterprise Library 4 数据访问应用程序块

Enterprise Library 数据访问应用程序块简化了实现常规数据访问功能的开发任务。应用程序可以在各种场景中使用此应用程序块&#xff0c;例如为显示而读取数据、传递数据穿过应用程序层( application layers)、以及将修改的数据提交回数据库系统。应用程序块包含对存储过程和内…

虚拟货币市值回调到4100亿整数关口,EOS逆势站上100关口

虚拟货币虚拟货币市值在过去24小时中&#xff0c;虚拟货币整体回调&#xff0c;市值为4100亿美元。只有EOS逆势上扬&#xff0c;已经站上了100元&#xff08;17.5美元&#xff09;上方。虚拟货币市场距离12月份最高点几乎只有一步之遥。EOS走势EOS这种疯狂的势头是很多人预料未…

【NCEPU】韩绘锦:图信号处理与图卷积神经网络

韩绘锦是华北电力大学数理系大四的学生&#xff0c;LSGO软件技术团队&#xff08;Dreamtech算法组&#xff09;/Datawhale成员&#xff0c;也在天池比赛中取得了不错的成绩&#xff0c;现保送大连理工大学软件工程学院深造。 希望参与我们线下组队学习的同学&#xff0c;可以在…

什么是python第三方库

Python计算生态 标准库 第三方库 标准库&#xff1a;随解释器直接安装到操作系统中的功能模块 第三方库&#xff1a;需要经过安装才能使用的功能模块 模块的概念&#xff1a;库Library、包Package、模块Module 出处&#xff1a;北理工Python慕课