【问题标题】:Access to restricted URI denied code: 1012访问受限 URI 被拒绝代码:1012
【发布时间】:2010-09-08 06:05:51
【问题描述】:

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

【问题讨论】:

    标签: javascript jquery ajax xss


    【解决方案1】:

    如果你使用 jQuery,它有一个回调函数来解决这个问题:

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

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

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

    【讨论】:

    • 那是你必须使用第二个选项,在传递 xml 的服务器端脚本中进行跨域调用
    • 我正在处理 JSON,添加 &callback=?却收到同样的错误
    • @Miroo 我也有同样的问题。你找到解决办法了吗?
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      另一种解决方案:如果您只需要标头,您可以指定“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");
      

      【讨论】:

        【解决方案4】:

        更多细节会更好:您正在使用哪个 AJAX 库,您希望实现什么目标,如何实现。

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

        【讨论】:

        • 抱歉,在 FireFox 3 上使用 JQuery $.ajax 时遇到了这个错误。尝试了 jsonp 建议,但我认为这只适用于可以提供 json 的东西。我正在尝试创建一个基于本地 html 文件的示例混搭,该混搭将从 Yahoo!Finance 中提取数据,但它们提供的是 .csv,所以我认为我是 SOL。
        • 使它工作的“魔法”是 JSONP 的“P”部分(填充),而不是 JSON 本身。使用固定服务(例如 Yahoo,您可能不走运),因为他们不会更改其服务以使其可用于以这种方式调用。
        【解决方案5】:

        我最近遇到了这个问题,它是在我作为 AJAX 加载本地请求时,而不是跨站点脚本问题。此外,吉米本人似乎也有同样的问题。这似乎是FF的安全问题,这篇文章描述了cause and the solution to access to restricted uri denied" code: "1012 problem

        抱歉,使用 JQuery 时出现该错误 FireFox 3 上的 $.ajax。试过 jsonp 建议,但我认为那只会 使用可以提供服务的东西 json。我正在尝试创建一个示例 基于本地 html 文件的混搭,将 从 Yahoo!Finance 中提取数据,但他们 正在服务.csv,所以我认为我是 SOL。 – Jimmy Chandra(9 月 9 日 17:20)

        我希望你会发现它有用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-31
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-24
          • 2012-03-17
          相关资源
          最近更新 更多