您好,欢迎来到哈瑞养生。
搜索
您的当前位置:首页Javascript跨域请求的4种解决方式_javascript技巧

Javascript跨域请求的4种解决方式_javascript技巧

来源:哈瑞养生


什么情况下才会出现跨域?
假设域名是:http://www.example.com.cn/
如果所请求的域名跟这个域名不致,这种情况就是跨域,由于跨域存在漏洞,所以一般来说正常的跨域请求方式是请求不到的。
解决方式:
一、window.name
1、 服务器返回
代码如下:
window.name='{"id":"3", "name":"leisure"}';
2、定义一个iframe,添加onload事件

var load = false;
function iLoad() {
if(load == false) {
// 同域处理,请求后会再次重新加载iframe
document.getElementById('iframe1').contentWindow.location = '/';
load = true;
} else {
// 获取window.name的内容,注意必须进行同域处理后方可访问!
var data = document.getElementById('iframe1').contentWindow.name;
alert(data); // {"id":"3", "name":"leisure"}
load = false;
}
}


3、定义一个form,设置form的target为iframe的id,然后提交form
代码如下:


二、JSONP
服务器返回 callback({"id": "3", "name": "leisure"});
代码如下:

function callback(data) {
alert(data);
}



三、jQuery.getJSON
服务器返回 json格式数据 test({"id": "3", "name": "leisure"}); test函数名为callback参数中定义
代码如下:
$.getJSON(url + "?callback=?", data, function(data) {
}

注意callback=?这个参数必须带上,jquery会自动生成一个函数名替换这个问号!jQuery.getJSON实际上是用了JSONP方式实现。
四、flash跨域
服务器添加crossdomain.xml
http://www.example.com.cn/crossdomain.xml
代码如下:




Copyright © 2019- harx.cn 版权所有

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务