PHP如何解决跨域问题

2019-03-29 09:58:23 4393

客户端域名和请求数据的域名不一致时,直接使用ajax访问就会报错Access-Control-Allow-Origin。一般前端解决的话会使用jsonp或者cors等手段钻空子,下面我给你介绍下php简单粗暴的解决方法。


问题描述

客户端域名和请求数据的域名不一致时,直接使用ajax访问就会报错 No ‘Access-Control-Allow-Origin’ allowed access.


<script type="text/javascript">

var dataArr=[]

$.ajax({

    type: "GET",

    url: "https://www.landui.com/service/common/obtain",

    success: function(data){

        var allData = JSON.parse(data.location);

    }

});

</script>

解决跨域

一般前端解决的话会使用 jsonp 或者 cors 等钻空子进行跨域,其实php只需加上一段代码就可以跨域了。前端代码不需要任何修改,而且post方式get方式都管用。


/*

获取位置

*/

public function obtain()

{

    // 制定允许其他域名访问

    header("Access-Control-Allow-Origin:*");

    // 响应类型

    header('Access-Control-Allow-Methods:POST');

    // 响应头设置

    header('Access-Control-Allow-Headers:x-requested-with, content-type');

    return json_encode(['status' => 1, 'location' => $data);

}

原因分析:

如果浏览器请求包括Access-Control-Request-Headers字段,则Access-Control-Allow-Headers字段是必需的。它也是一个逗号分隔的字符串,表明服务器支持的所有头信息字段,不限于浏览器在”预检”中请求的字段。


问题分析

image.png

然后看了请求头中确实包括Access-Control-Request-Headers,然后成功返回接口信息。


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: