咨询热线:4006-75-4006
售前:9:00-23:30 备案:9:00-18:00 技术:7*24h
客户端域名和请求数据的域名不一致时,直接使用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字段是必需的。它也是一个逗号分隔的字符串,表明服务器支持的所有头信息字段,不限于浏览器在”预检”中请求的字段。
问题分析
然后看了请求头中确实包括Access-Control-Request-Headers,然后成功返回接口信息。