浏览器拦截跨域请求处理方法(已阻止跨源请求:同源策略禁止读取远程资源) 原文地址:http://my.oschina.net/lichaoqiang/blog/317823 在浏览器请求中,出现跨
2017-12-31 10:10
483 查看
浏览器拦截跨域请求处理方法(已阻止跨源请求:同源策略禁止读取远程资源)
原文地址:http://my.oschina.net/lichaoqiang/blog/317823
在浏览器请求中,出现跨域访问资源的问题,我们肯定会遇到。如果跨域请求被阻止,有可能导致css、js 、ajax请求、font字体等资源出现无法正常访问的问题。接下来,就介绍下解决同源策略不允许读取远程资源的问题。
今天就谈下远程字体跨域的问题。
直接了当了说,解决此类问题,最直接的方法就是,就是给被请求的服务器,添加HTTP头响应头,这里提供两种添加HTTP头的方法:
第一种,就是在程序中添加HTTP头:
复制代码
如: Response.Headers.Add("Access-Control-Allow-Origin", "*");
// JSON
{
'Access-Control-Allow-Origin': '*',
}
// HTML
<meta http-equiv="Access-Control-Allow-Origin" content="*">
// PHP
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");
复制代码
添加此段代码的目的很简单,也就是告诉浏览器,这个资源是运行远程所有域名访问的。当然,此处的*也可以替换为指定的域名,出于安全考虑,建议将*替换成指定的域名。
第二种,就是在服务器上,添加HTTP响应头。在这里,我们就以IIS6.0为例:
在被请求的网站上,设置HTTP头,添加“
//在被请求的网站上,设置HTTP头,添加
"Access-Control-Allow-Origin:*" //值为*或指定的域名。
第三种,使用JSONP格式,即在jQuery中ajax请求参数dataType:'JSONP':
复制代码
<script>
$.ajax({
url:"http://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 versi
4000
on="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>
原文地址:http://my.oschina.net/lichaoqiang/blog/317823
在浏览器请求中,出现跨域访问资源的问题,我们肯定会遇到。如果跨域请求被阻止,有可能导致css、js 、ajax请求、font字体等资源出现无法正常访问的问题。接下来,就介绍下解决同源策略不允许读取远程资源的问题。
今天就谈下远程字体跨域的问题。
直接了当了说,解决此类问题,最直接的方法就是,就是给被请求的服务器,添加HTTP头响应头,这里提供两种添加HTTP头的方法:
第一种,就是在程序中添加HTTP头:
复制代码
如: Response.Headers.Add("Access-Control-Allow-Origin", "*");
// JSON
{
'Access-Control-Allow-Origin': '*',
}
// HTML
<meta http-equiv="Access-Control-Allow-Origin" content="*">
// PHP
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");
复制代码
添加此段代码的目的很简单,也就是告诉浏览器,这个资源是运行远程所有域名访问的。当然,此处的*也可以替换为指定的域名,出于安全考虑,建议将*替换成指定的域名。
第二种,就是在服务器上,添加HTTP响应头。在这里,我们就以IIS6.0为例:
在被请求的网站上,设置HTTP头,添加“
//在被请求的网站上,设置HTTP头,添加
"Access-Control-Allow-Origin:*" //值为*或指定的域名。
第三种,使用JSONP格式,即在jQuery中ajax请求参数dataType:'JSONP':
复制代码
<script>
$.ajax({
url:"http://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 versi
4000
on="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>
相关文章推荐
- 浏览器拦截跨域请求处理方法(已阻止跨源请求:同源策略禁止读取远程资源)
- 浏览器拦截跨域请求处理方法(已阻止跨源请求:同源策略禁止读取远程资源)
- 浏览器拦截跨域请求处理方法(同源策略不允许读取XXX上的远程资源)
- 浏览器拦截跨域请求处理方法(同源策略不允许读取服务器远程资源)
- 浏览器拦截跨域请求处理方法(firebug报错,同源策略不允许读取XXX上的远程资源)
- 访问网页时:已拦截跨源请求:同源策略禁止读取位于 http:的远程资源。(原因:CORS 头缺少 'Acce:
- 已拦截跨源请求:同源策略禁止读取位于 http://localhost:8080/*的远程资源。(原因:CORS 头缺少 'Access-Control-Allow-Origin')。
- 浏览器拦截跨域请求处理方法-firefox报错,同源策略不允许读取XXX上的远程资源
- 已拦截跨源请求:同源策略禁止读取位于 http:**** 的远程资源。(原因:CORS 头缺少 'Access-Control-A
- 解决浏览器出现的【已拦截跨源请求:同源策略禁止读取】问题
- 已阻止跨源请求:同源策略禁止读取位于...的远程资源。(原因:CORS 头缺少 'Access-Control-Allow-Origin')。
- Firebug: 已拦截跨源请求:同源策略禁止读取位于XXX的远程资源。(原因:CORS 头缺少 'Access-Control-Allow-
- 出现Font from origin处理方法 浏览器拦截跨域请求处理方法
- ArcGIS Server API for JavaScript调用错误:已阻止跨源请求:同源策略禁止读取位于......
- 浏览器拦截跨域请求处理方法
- 已阻止跨源请求:同源策略禁止读取位于
- 浏览器禁止跨域请求json数据解决方法--jsonp
- golang web服务器处理前端HTTP请求跨域的方法
- Firebug报错:已阻止交叉源请求:同源策略不允许读取XXX上的远程资源。可以将资源移动到相同的域名上或者启用 CORS 来解决这个问题
- 浏览器同源策略与跨域请求的实现方法