如何解决FireFox 3上的Ajax跨站点脚本问题?
答案 0 :(得分:20)
如果你正在使用jQuery,它有一个回调函数来克服这个问题:
http://docs.jquery.com/Ajax/jQuery.ajax#options
从jQuery 1.2开始,您可以加载JSON 数据位于另一个域名(如果您) 指定一个JSONP回调,可以是 像这样做:“myurl?callback =?”。 jQuery自动替换? 使用正确的方法名称来调用, 调用指定的回调。要么, 如果将dataType设置为“jsonp”a 回调将自动添加 到您的Ajax请求。
或者,您可以向服务器端脚本发出ajax请求,然后将数据传回脚本
答案 1 :(得分:6)
更新答案(我想,主要是为了我以后查找此答案时的好处),如果正在加载XML或其他内容,您可以随时询问用户是否允许我们从其他站点读取使用此代码:
try {
if (netscape.security.PrivilegeManager.enablePrivilege)
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
} catch (e) {
alert("Sorry, browser security settings won't let this program run.");
return;
}
(来自RESTful Web服务手册)但是,这只适用于firefox,当从本地文件加载html文件时。所以,没那么有用。
答案 2 :(得分:1)
还有一个解决方案:如果您只需要标题,则可以指定“HEAD”作为方法,它不会触发安全问题。例如,如果您只是想知道网页是否存在。
var client = new XMLHttpRequest();
client.open("HEAD", my_url, false);
client.send(null);
if(client.readyState != 4 || client.status != 200) //if we failed
alert("can't open web page");
答案 3 :(得分:0)
更多细节会很好:你正在使用哪个AJAX库,你想要实现什么,你是怎么做的。
例如,它可以是跨域Ajax请求,这是不允许的。在这种情况下,请使用JSON。
答案 4 :(得分:0)
我最近遇到了这个问题,当我作为AJAX加载本地请求时,而不是跨站点脚本问题。此外,吉米自己似乎也有同样的问题。这似乎是FF安全问题,本文介绍了cause and the solution to access to restricted uri denied" code: "1012 problem。
抱歉,使用JQuery得到了这个错误 FireFox 3上的$ .ajax。试过jsonp 建议,但我认为这只会 与能够提供服务的东西合作 JSON。我正在尝试创建一个样本 将基于本地html文件的mashup 从雅虎财经中获取数据,但他们 正在服务.csv,所以我觉得我是SOL。 - 吉米钱德拉(9月9日17:20)
我希望你会发现它很有用。