thinkphp 跨域问题,解决官方需要写很多路由的问题

thinkphp 官方文档中跨域问题,需要每个路由单独配置,但是更多的时候需要全局跨域,一个项目几百个接口,都写一遍,真的要死人了

自行添加请求头即可解决,不过thinkphp进行了处理,对于一些特殊的请求头都会重新设置一遍(应该是之前设置过就不设置了呀,绝对是个bug),导致我们自己设置的请求头不起作用,头疼啊

我的解决方法:(另外用后置中间件添加请求头也是可以实现的)
在入口文件 index.php中,(当然有的人入口文件不是index.php,自己找到就好),加入以下代码

header("Access-Control-Allow-Origin:" . request()->server('HTTP_ORIGIN'));//这样配置是任何来源的请求都允许跨域,如果设置成*也是允许任何来源域名跨域,当然大多数情况是只允许一个域名跨域,比如 http://a.com,就需要写成header("Access-Control-Allow-Origin:http://a.com";
header("Access-Control-Allow-Methods:GET, POST, OPTIONS, DELETE");
header("Access-Control-Allow-Headers:DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type, Accept-Language, Origin, Accept-Encoding");
header('Access-Control-Allow-Credentials:true');//这里是允许携带cookie的,如果开启,Access-Control-Allow-Origin这个请求头不能是*,只能是指定的某一个域名
添加好了之后如下所示:
<?php
// [ 应用入口文件 ]
namespace think;

use app\index\controller\Api;

require __DIR__ . '/../vendor/autoload.php';

// 执行HTTP应用并响应
$http = (new App())->http;

$response = $http->run();
Api::check_e();
$response->send();
header("Access-Control-Allow-Origin:" . request()->server('HTTP_ORIGIN'));
header("Access-Control-Allow-Methods:GET, POST, OPTIONS, DELETE");
header("Access-Control-Allow-Headers:DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type, Accept-Language, Origin, Accept-Encoding");
header('Access-Control-Allow-Credentials:true');
$http->end($response);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值