thinkphp 中间件跨域
thinkphp 解决代理问题
在app目录下的middleware文件中
开启全局开局允许中间件
\think\middleware\AllowCrossDomain::class
原来这么简单 我自己弄vue 弄了一下午 狗贼 呀 不要跑
php 原生 响应头 跨域
$web = request()->header(‘Origin’);
//跨域请求设置
header(“Access-Control-Request-Method:GET,POST”);
header(“Access-Control-Allow-Credentials:true”);
header(“Access-Control-Allow-Origin:”.$web);
header(“Access-Control-Allow-Headers:token,Content-Type, Authorization, Accept, Range, Origin,Token,Lang,lang”);
if($this->request->isOptions()){
exit;
}
php中发送https请求时 会出现curl未开启ssl安全问题
将其换成http普通请求就好
今天遇到一个跨域问题记录学习下:
一、问题:
跨域请求中包含自定义header字段时,浏览器console报错。
Request header field xfilesize is not allowed by Access-Control-Allow-Headers
二、原因:
包含自定义header字段的跨域请求,浏览器会先向服务器发送OPTIONS请求,探测该服务器是否允许自定义的跨域字段。
如果允许,则继续实际的POST/GET正常请求,否则,返回标题所示错误。
所以需要在你服务端的Access-Control-Allow-Headers中设置你自定义的请求头内容
示例 thinkphp6中
//使用全局开局中间件
\think\middleware\AllowCrossDomain::class
在 AllowCrossDomain中修改
关于token处理
后端方面 全局路由中间件 只负责处理token是否是对的 不负责做别的
生成token只在login中生成
thinkphp中 中间件使用$request得到的controller名字都为 小写 切记是小写的 所以判断的时候一定要非常小心的注意