浏览器拦截跨域请求处理方法(已阻止跨源请求:同源策略禁止读取远程资源)

原文地址: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="*">

添加此段代码的目的很简单,也就是告诉浏览器,这个资源是运行远程所有域名访问的。当然,此处的*也可以替换为指定的域名,出于安全考虑,建议将*替换成指定的域名。

第二种,就是在服务器上,添加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 version="1.0"?>
<cross-domain-policy>
  <allow-access-from domain="*" />
</cross-domain-policy>
时间: 2024-10-05 05:58:25

浏览器拦截跨域请求处理方法(已阻止跨源请求:同源策略禁止读取远程资源)的相关文章

浏览器拦截跨域请求处理方法

解决跨域的解决办法有多种,比如jsonp,或者apache 或者nigix里面配置,或者后端的php或者java中配置 cross orgion. 在网上搜了一圈,发现处理方式都差不多,但是我们得清楚这些到底怎么用. 先看下这段代码: <?xml version="1.0"?> <cross-domain-policy> <allow-access-from domain="*" /> </cross-domain-poli

header头设置解决 “已拦截跨源请求:同源策略禁止读取位于 http://47.104.128.87/back/test/test 的远程资源。(原因:CORS 头缺少 &#39;Access-Control-Allow-Origin&#39;)。”

跨域请求错误提示如下图: 解决方法在请求的php页面添加header头: 代码如下: public function test() { //支持全域名访问,不安全,部署后需要固定限制为客户端网址 header('Access-Control-Allow-Origin:*'); //支持的http 动作 header('Access-Control-Allow-Methods:POST,GET,OPTIONS,DELETE'); //响应头 请按照自己需求添加. header('Access-Co

浏览器拦截跨域请求处理方法-firefox报错,同源策略不允许读取XXX上的远程资源

使用post请求域名不相同的资源的话,可以用cors跨域. 1) 在被请求的项目根目录(root下)下放以下文件 crossdomain.xml [html] view plaincopyprint? <?xml version="1.0"?> <!DOCTYPE cross-domain-policy SYSTEM "./cross-domain-policy.dtd"> <cross-domain-policy> <si

解决ajax跨域的方法原理详解之Cors方法

1.神马是跨域(Cross Domain) 对于端口和协议的不同,只能通过后台来解决. 一句话:同一个ip.同一个网络协议.同一个端口,三者都满足就是同一个域,否则就是 跨域问题了.而为什么开发者最初不直接定为一切可跨域的呢?默认的为什么都是不可跨域呢?这就涉及到了同源策 略,为了系统的安全,由Netscape提出一个著名的安全策略.现在所有支持JavaScript的浏览器都会使用这个策略. 所谓同源是,域名,协议,端口相同.当我们在浏览器中打开百度和谷歌两个网站时,百度浏览器在执行一个脚本的

ajax 跨域解决方法

最近在开发过程中,使用ajax去异步调取图片.在开发中这个功能没什么问题,可以后来提测,重新部署之后就有问题了,这就是ajax的跨域问题. ajax本身是不支持跨域的,这是由于javascript的同源策略所导致.但是我们可以通过其他方法来解决ajax的跨域问题. 1  由于我们是利用了jquery来写的ajax,我们一开始是准备 利用jsonp来解决的,客户端类似下面写法 $.ajax({ type : "get", async:false, url : "http://w

跨域限制原因及常见跨域方法

跨域 游览器的同源策略(浏览器对JavaScript施加的安全限制)(也就是说服务端不受限制) 同源策略: 1.DOM同源策略:禁止对不同源页面DOM进行操作.这里主要场景是iframe跨域的情况,不同域名的iframe是限制互相访问的. 2.XmlHttpRequest同源策略:禁止使用XHR对象向不同源的服务器地址发起HTTP请求. 定义:协议.域名.端口任意一个不同,就产生跨域 PS:协议不同 如http.https 跨域限制的原因: 1.AJAX同源策略主要用来防止CSRF攻击.如果没有

web项目中的跨域问题解决方法

一种是JSONP 一种是 CORS. 在客户端Javascript调用服务端接口的时候,如果需要支持跨域的话,需要服务端支持. JSONP的方式就是服务端对返回的值进行回调函数包装,他的优点是支持众多的浏览器, 缺点是仅支持Get的方式对服务端请求. 另一种主流的跨域方案是CORS,他仅需要服务端在返回数据的时候在相应头中加入标识信息.这种方式非常简便.唯一的缺点是需要浏览器的支持,一些较老的浏览器可能不支持CORS特性. 跨域支持是创建WebService时应该考虑的一个功能点,文中是使用Se

Ajax跨域请求 同源策略与Jsonp

同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现.同源策略,它是由Netscape提出的一个著名的安全策略.现在所有支持JavaScript 的浏览器都会使用这个策略.所谓同源是指,域名,协议,端口相同.当一个浏览器的两个tab页中分别打开来 百度和谷歌的页面当浏览器的百度tab页执行一个脚本的时候会检查这个脚本是属于哪个

AJAX跨域问题解决方法(1)——禁止浏览器进行跨域限制

思路:通过命令行修改浏览器启动参数,使得浏览器不进行跨域检查,从而允许跨域 方法:命令行参数启动浏览器后添加参数--disable-web-security 例:chrome --disable-web-security --disabl-web-security参数的作用是禁止浏览器进行跨域检查 但是,这种方法有三个缺点: 1.每次启动浏览器都需要通过命令行启动,太过繁琐 2.该方法会导致安全性方面的问题 3.该方法是客户端方面的改动,在实际使用中,在每个客户端上都禁止浏览器进行跨域检查不太现