返回信息流<!DOCTYPE html PUBLIC "-//W#C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transition.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>获取数据</title>
<meta charset="utf-8" />
<script type="text/javascript" src="jquery-1.10.2.min.js"></script>
<style type="text/css"></style>
<script type="text/javascript">
$(function(){
$("#Button1").click(function(){
$.get("http://www.w3school.com.cn/example/xmle/note.xml",function(data){
$("#divTip").empty();
var strHTML="";
$(data).find("note").each(function(){
var $strUser=$(this);
strHTML+="发送给:"+$strUser.find("to").text()+"<br>";
strHTML+="发出者:"+$strUser.find("from").text()+"<br>";
strHTML+="标题:"+$strUser.find("heading").text()+"<hr>";
})
$("#divTip").html(strHTML);
})
})
})
</script>
</head>
<body>
<div class="divFrame">
<div class="divTitle">
<input type="button" id="Button1" class="bnt" value="请求数据" />
</div>
<div class="divContent">
<div id="divTip"></div>
</div>
</div>
</body>
</html>
上面代码运行时chrome出现错误XMLHttpRequest cannot load http://www.w3school.com.cn/example/xmle/note.xml. Origin http://localhost is not allowed by Access-Control-Allow-Origin.怎么解决?
这是一条镜像帖。来源:北邮人论坛 / www-technology / #23487同步于 2014/2/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖
[问题]求问javascript跨域访问的问题
oo77
2014/2/26镜像同步10 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 oo77 的大作中提到: 】
: 怎么包一层请求呢?
:
板凳所谓的“包一层”其实就是说web端代理的办法
用一个iframe来请求你需要的数据,然后ajax请求这个iframe拿到的东西,就不跨域了
像这种做简单的练习,把浏览器同源限制取消就可以了。实际项目中就需要采用恰当的技术。
如果用的chrome浏览器:
方法有多种,首先要关闭已经打开的chrome浏览器
一种方法:命令行进入到chrome.exe目录,通过命令行启动chrome并传递命令行参数:chrome --disable-web-security
第二种方法是选中chrome.exe右键:创建快捷方式,选中快捷方式,右键:属性,点击快捷方式选项卡,找到目标栏,在后面添加-args -disable-web-security 得到类似这样的字符串:"C:\Program Files\Google\Chrome\Application\chrome.exe" -args -disable-web-security 点击确定,以后从这个快捷方式打开的chrome就没有了同源限制
下面是运行上面代码的结果
发送给:George
发出者:John
标题:Reminder
【 在 rhj1122 的大作中提到: 】
:
: 板凳所谓的“包一层”其实就是说web端代理的办法
: 用一个iframe来请求你需要的数据,然后ajax请求这个iframe拿到的东西,就不跨域了
你的方法应该不可行,仍然存在跨域问题,当前域根本就无法获取到iframe里面的内容,包一层的意思应该是是在当前域的后台做一个正向代理,每次数据访问都是访问当前域的后台,后台负责请求其它域。
【 在 a789asd456fg 的大作中提到: 】
: 你的方法应该不可行,仍然存在跨域问题,当前域根本就无法获取到iframe里面的内容,包一层的意思应该是是在当前域的后台做一个正向代理,每次数据访问都是访问当前域的后台,后台负责请求其它域。
iframe的页面请求是可以跨域的嘛,就像文件图片src一样,jsonp怎么实现?还不是就是利用js文件可以跨域请求的方法来实现的。你应该是理解错我意思了,不是说在iframe里面用ajax。是用ajax请求已经拿到了的同域数据。
跨域请求几个方法,jsonp、iframe桥接都是需要能控制两个域,剩下的就只有web端代理和flash能够做到。
【 在 rhj1122 的大作中提到: 】
:
: iframe的页面请求是可以跨域的嘛,就像文件图片src一样,jsonp怎么实现?还不是就是利用js文件可以跨域请求的方法来实现的。你应该是理解错我意思了,不是说在iframe里面用ajax。是用ajax请求已经拿到了的同域数据。
: 跨域请求几个方法,jsonp、iframe桥接都是需要能控制两个域,剩下的就只有web端代理和flash能够做到。
我明白你说的意思,但是iframe跨域并不是你说的那样,iframe是可以拿到其它域的数据,但是当前域依旧没有办法获取到iframe里面的数据,这个你可以测试一下。