手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >Javascript跨域请求的4种解决方式
Javascript跨域请求的4种解决方式
摘要:什么情况下才会出现跨域?假设域名是:http://www.example.com.cn/如果所请求的域名跟这个域名不致,这种情况就是跨域,由...

什么情况下才会出现跨域?

假设域名是:http://www.example.com.cn/

如果所请求的域名跟这个域名不致,这种情况就是跨域,由于跨域存在漏洞,所以一般来说正常的跨域请求方式是请求不到的。

解决方式:

一、window.name

1、 服务器返回

复制代码 代码如下:

<script>window.name='{"id":"3", "name":"leisure"}';</script>

2、定义一个iframe,添加onload事件 <iframe id="iframe1" onload="iLoad"><iframe>

<script type="text/javascript">

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;

}

}

</script>

3、定义一个form,设置form的target为iframe的id,然后提交form

复制代码 代码如下:

<form action="url" method="POST" target="iframe1">

<button type="submit" value="submit" />

</form>

二、JSONP

服务器返回 callback({"id": "3", "name": "leisure"});

复制代码 代码如下:

<script type="text/javascript">

function callback(data) {

alert(data);

}

</script>

<script type="text/javascript" src="http://www.example.com.cn/product.jsp?id=5&jsonp=callback"></script>

三、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

复制代码 代码如下:

<?xml version="1.0"?>

<cross-domain-policy>

<allow-access-from domain="*.another.com.cn" />

</cross-domain-policy>

【Javascript跨域请求的4种解决方式】相关文章:

JavaScript中的异常处理方法介绍

javascript验证邮件地址和MX记录的方法

js跨域请求的5中解决方式

javascript实现树形菜单的方法

javascript实现行拖动的方法

JavaScript获取两个数组交集的方法

用JavaScript实现对话框的教程

JavaScript中length属性的使用方法

JavaScript中的pow()方法使用

javascript实现简单的进度条

精品推荐
分类导航