访问受限制的URI拒绝代码:1012

你如何解决FireFox 3上的这个Ajax跨站点脚本问题?

如果您正在使用jQuery,它有一个回调函数来克服这个问题:

http://docs.jquery.com/Ajax/jQuery.ajax#options

从jQuery 1.2开始,如果指定了JSONP回调,则可以加载位于另一个域上的JSON数据,这可以这样做:“myurl?callback =?”。 jQuery自动替换? 使用正确的方法名称来调用,调用指定的回调。 或者,如果将dataType设置为“jsonp”,则回调将自动添加到您的Ajax请求中。

或者,您可以向服务器端脚本发出ajax请求,该脚本为您执行跨域调用,然后将数据传递回脚本

要更新答案(我想,主要是为了我以后查找此答案时的好处),如果要加载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文件时。 所以,没那么有用。

还有一个解决方案:如果您只需要标题,则可以指定“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"); 

更多细节会很好:你正在使用哪个AJAX库,你想要实现什么,你是如何做到的。

例如,它可以是跨域Ajax请求,这是不允许的。 在这种情况下使用JSON 。

我最近遇到了这个问题,当我作为AJAX加载本地请求时,而不是跨站点脚本问题。 此外,吉米自己似乎也有同样的问题。 这似乎是FF安全问题,本文描述了访问受限制的uri的原因和解决方案否认“代码:”1012问题 。

对不起,在FireFox 3上使用JQuery $ .ajax得到了这个错误。尝试了jsonp建议,但我认为这只能用于提供json的东西。 我正在尝试创建一个基于mashup的示例本地html文件,它将从Yahoo!Finance中提取数据,但它们正在服务.csv,所以我认为我是SOL。 – 吉米钱德拉(9月9日17:20)

我希望你会发现它很有用。