您现在的位置是:网站首页> php专栏 thinkphp

thinkphp ajax请求跨域问题解决

亦然2019-07-11 10:45:11thinkphp人已围观

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

在开发过程中,难免会遇到跨域发起业务请求,比如A站点向B站点请求数据等等。跨域的解决方法有很多种,这里只介绍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');

其中访问源可以指定某个域名,比如:

// 允许 baidu.com 发起的跨域请求
header("Access-Control-Allow-Origin: baidu.com"); 
//如果需要设置允许所有域名发起的跨域请求,可以使用通配符 *
header("Access-Control-Allow-Origin: *");                                        

但是这样的话需要在每个控制器里面写一个这样的,那么我们的控制器一般都是直接继承控制器,那么我们就定义一个Base基类

class Base 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');
    }
}
php

很赞哦!()

上一篇:tp5实现按月查询价格的平均值

下一篇: 这已经是最后一篇了!
亦然

亦然(共32篇文章)

愿你我既可以朝九晚五,也可以浪迹天涯;愿你我既可以拈花把酒,也能围炉诗书茶。