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
上传文件时会出现跨域问题。