跨域的方法

  跨域会存在安全问题,例如,黑客可以在本地域通过远程域获得相应的权限,然后利用得到的权限运行脚本发起攻击。通过跨域资源共享(CORS Cross-Origin Resource Sharing)可以预防某些恶意的行为。

  1、IE对CORS的实现

  通过引用XDR对象。

var xdr = new XDomainRequest;
xdr.onload = function(){
    alert("xdr.responseText");
};
xdr.onerror = function(){
  alert("an error occurred");      // 处理请求失败的情况
};
xdr.open("get","绝对地址");          // 这里传入的只有两个参数
xdr.send(null);
 

  2、其他浏览器,通过XHR对象实现CORS

var xhr = createXHR();
xhr.onreadystatuschange = function(){
    if( xhr.readyState == 4 ){
        if( (xhr.status>=200 && xhr.status < 300) || xhr.status == 304 ){
             alert(xhr.responseText);
        }else{
             alert("Request was fail:" + xhr.status);
        }
    }
};
xhr.open("get","绝对地址",true);    // true表示异步,这里传入的是三个参数
xhr.send(null);            

  3、图像Ping

  这种跨域是通过<img>标签实现的,这是一种浏览器与服务器之间单向的通信方式,而且,只能发送GET请求,无法访问服务器的响应文本。

  4、JSONP(json with padding)技术,由两部分组成“回调函数”和“数据(json数据)”。是应用json的一种新方法。通过函数包含json的方式,使用动态<script>元素中的src属性指定一个跨域URL。

  优点是可以直接访问响应文本,支持在浏览器与服务器之间双向通信。但是,如果其他域是不安全的,将会带来安全隐患。而且,这样的方式不好确定jsonp的请求是否失败。

时间: 2024-12-20 23:11:03

跨域的方法的相关文章

跨域通信方法总结

本文总结了5种较常见的跨域通信方法,如下: 1)jsonp 2)CORS(Cross OriginResource Sharing,跨源资源共享) 3)主域相同可以设置document.domain 4)利用window.name实现跨域 5)利用window.name实现跨域 jsonp 讲解jsonp之前先看一个例子:假设域A.com上有一个页面a.html,代码如下: var dosomething= function(data){ alert('我是A.com域上的页面,可以被跨域的re

跨域解决方法

跨域解决方法: 1.利用后端 ①设置头信息 ②后端代理 2.flash代理 3.jsonp 在js中找到一个代理 ①能够访问网络资源,并且不会有跨域问题 ②获取到资源数据可以给js使用 var oScript = document.createElement('script'); oScript.src = 'data.php'; document.body.appendChild(oScript); IE解决$.ajax() 跨域 $.support.cors = true;

JS访问或设置cookie的方法+跨域调用方法

无意中从163网站获取的JS访问或设置cookie的方法,Log到日志上以防遗忘 //COOKIE功能检查function fCheckCookie(){    if(!navigator.cookieEnabled){        alert("您好,您的浏览器设置禁止使用cookie\n请设置您的浏览器,启用cookie功能,再重新登录.");    }} //获取Cookiefunction fGetCookie(sName){   var sSearch = sName +

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

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

ajax 跨域解决方法

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

AJAX四种跨域处理方法

同源策略 同源策略 同源策略限制从一个源加载的文档或者脚本如何与来自另一个源的资源进行交互.这是一个用于隔离潜在恶意文件的关键的安全机制.具体定义是:一段脚本向后台请求数据,只能读取属于同一协议名.同一主机名.同一端口号下的数据.因此,请求不同协议名.不同主机名.不同端口号下的文件,违背同源策略,无法请求成果,需要进行跨域处理.同源策略限制的具体行为:(1)Cookie.LocalStorage.IndexDB无法读取:(2)DOM无法获得:(3)AJAX请求不能发送. 什么是跨域? 两个页面之

解决跨域的方法

前端解决跨域的方法都是基于<script>标签可以跨域请求 平时的ajax请求所经历的过程 const xhr = new XMLHttpRequest() xhr.onreadystatechange = function () { switch (xhr.readyState) { case 0: // UNSENT (未打开) debugger break case 1: // OPENED (未发送) debugger break case 2: // HEADERS_RECEIVED

odoo Controller接口开发 POST请求的跨域问题解决方法

odoo Controller接口开发 POST请求的跨域问题解决方法 1.odoo Controller接口开发,前端在请求的时候会发生跨域问题,报错信息如下:Function declared as capable of handling request of type 'json' but called with a request of type 'http' 2.解决方法如下: odoo官网给的参数解释: cors – The Access-Control-Allow-Origin c

跨域cors方法(jsonp,document.domain,document.name)及iframe性质

这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被当作是不同的域. 下表给出了相对 http://store.company.com/dir/page.html 同源检测的结果: 要解决跨域的问题,我们可以使用以下几种方法: 1.通过jsonp跨域[解决ajax跨域] 在js中,我们直接用XMLHttpRequest请求不同域上的数据时,是不可以的

前端跨域问题解决方法

1.什么是跨域及产生原因 跨域是指a页面想获取b页面资源,如果a.b页面的协议.域名.端口.子域名不同,或是a页面为ip地址,b页面为域名地址,所进行的访问行动都是跨域的,而浏览器为了安全问题一般都限制了跨域访问,也就是不允许跨域请求资源. 跨域情况如下: url 说明 是否跨域 http://www.cnblogs.com/a.jshttp://www.a.com/b.js 不同域名 是 http://www.a.com/lab/a.jshttp://www.a.com/script/b.js