解决跨域请求被拦截:缺少 Access-Control-Allow-Origin 标头
浏览器提示已拦截跨源请求时的六种解法:PHP、JSON、HTML 加响应头,服务器与宝塔面板配置,JSONP、crossdomain.xml,以及阿里云 OSS 跨域规则。
一、 在程序中添加HTTP头
PHP
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");
JSON
{
'Access-Control-Allow-Origin': '*',
}
HTML
<meta http-equiv="Access-Control-Allow-Origin" content="*">
二、在服务器中添加
在被请求的网站上,设置HTTP头,添加
"Access-Control-Allow-Origin:*" //值为*或指定的域名。
三、 使用JSONP格式
在jQuery中ajax请求参数dataType:‘JSONP’
<script>
$.ajax({
url:"https://map.oicqzone.com/gpsApi.php?lat=22.502412986242&lng=113.93832783228",
type:'GET',
dataType:'JSONP', // 处理Ajax跨域问题
success: function(data){
$('body').append( "Name: " + data );
}
});
</script>
四、在服务器创建
在被请求服务器根目录下创建:“crossdomain.xml”的文件,内容如下:
<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>
五、 在宝塔面板添加
在站点修改 > 配置文件内添加如下代码
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';


评论