欢迎来到代码驿站!

JavaScript代码

当前位置:首页 > 网页前端 > JavaScript代码

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

时间:2021-05-25 08:22:49|栏目:JavaScript代码|点击:
什么情况下才会出现跨域
假设域名是: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>

上一篇:js实现图片轮换效果代码

栏    目:JavaScript代码

下一篇:js注意img图片的onerror事件的分析

本文标题:Javascript跨域请求的4种解决方式

本文地址:http://www.codeinn.net/misctech/128602.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有