ThinkPHP5 跨域问题

ThinkPHP5默认不允许跨域,需要修改下header项。

public/index.php中,define之前加上

$origin = isset($_SERVER['HTTP_ORIGIN'])? $_SERVER['HTTP_ORIGIN'] : '';
header('Access-Control-Allow-Origin: '.$origin);

header('Access-Control-Allow-Headers: HTTP_X_REQUESTED_WITH,X-Requested-With,X_Requested_With,Content-Type,ClientVersion,Authorization,Version, Token, Origin,Accept,DNT,X-Mx-ReqToken');
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');

header('Access-Control-Allow-Credentials: true');

刷新下前端页面就可以了。

该跨域方法同样适用于FastAdmin等一众使用ThinkPHP5的框架。

Update 2020.05.16

最近在协同前端使用uni-app做开发,打包和真机调试的APP没有跨域问题,而本地调试及打包出来H5页面的Chrome浏览器中有跨域问题。

网上的解决方案多是修改manifest.json中的h5项,经测试,基本不管用。还是需要服务器端做处理,也就是上面的方案。

另:

FastAdmin的common\controller\Api.php中的_initialize方法关于权限的验证有点问题,导致uni-app的H5页面在使用uni.uploadFile上传文件时会出现跨域问题。

Leave a Comment

豫ICP备19001387号-1