tp ajax请求跨域解决方法

跨域是浏览器出于安全的同源策略,简单来说:浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是属于跨域。

跨域的解决方法有很多种,这里只介绍ThinkPHP的解决方法。

核心语句:

// 返回JSON数据格式到客户端 包含状态信息
header('Content-Type:application/json; charset=utf-8');
// 允许访问源
header('Access-Control-Allow-Origin:*'); 
// 允许访问的有效期
header('Access-Control-Max-Age:86400'); 
// 允许访问的方法
header('Access-Control-Allow-Methods:OPTIONS, GET, POST, DELETE');

一开始我想到的是直接放在每个方法的下面,如下

public function login(){
    header('Content-Type:application/json; charset=utf-8');
    header('Access-Control-Allow-Origin:*'); 
    header('Access-Control-Max-Age:86400'); 
    header('Access-Control-Allow-Methods:OPTIONS, GET, POST, DELETE');
}

虽然可以成功的解决跨域的问题,但是每写一个方法都需要重新写这四条语句,就会比较麻烦。

那么我们的控制器一般都是直接继承Controller,那么我们就定义一个BaseController,

class BaseController extends Controller{
    public function _initialize(){
        //处理跨域问题
        header('Content-Type:application/json; charset=utf-8');
        header('Access-Control-Allow-Origin:*'); 
        header('Access-Control-Max-Age:86400'); // 允许访问的有效期
        header('Access-Control-Allow-Headers:*'); 
        header('Access-Control-Allow-Methods:OPTIONS, GET, POST, DELETE');
    }
}

然后把我们的接口全部继承BaseController即可

好了,这样就可以一劳永逸了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值