if (isset($_SERVER['HTTP_ORIGIN'])) {
header("Access-Control-Allow-Origin: " . $this->request->server('HTTP_ORIGIN'));
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400'); // cache for 1 day
}
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");
}
这是因为你绑定二级域名后,Cookie域不同了,可以通过以下修改来实现同域。
首先需要打开
application/config.php
,修改其中的
url_domain_deploy
改为true
因为我们是多域名了,还需要设置
session
和cookie
的域名,如下:注意
domain
为你的根域名配置完成后注意清除
runtime
的缓存和浏览器缓存,包含Cookie信息都需要清除。跨域说明
如果你有其它页面接口调用
api.yoursite.com
时可能出现跨域问题,我们可以修改/public/assets/js/fast.js
,修改其中的Fast.api.ajax
方法,修改为其中的
是我们新增加的代码,注意因为涉及修改了核心文件,需要使用
php think min -m all -r js
重新压缩打包下JS代码然后我们再修改我们Api的基类
application/common/controller/Api.php
,在_initialize
中添加以下代码即可。