代码之家  ›  专栏  ›  技术社区  ›  chedine

即使对于本地文件,跨域Ajax也会失败

  •  8
  • chedine  · 技术社区  · 15 年前

    我有一个 地方的 带有Ajax函数的HTML文件试图从 Xcom . 运行时的文件仅在IE上工作,在Firefox和Safari浏览器上失败。当然,这可能是因为同一原产地政策。但是,我从某人那里听说,对于使用file://protocol加载的脚本,这个 同一原产地政策 不适用。是真的吗?如果是,本地HTML文件有什么问题?

    2 回复  |  直到 15 年前
        1
  •  8
  •   Nick Craver    15 年前

    它确实应用于本地文件,将它们全部视为单独的域(如您所见,这因浏览器而异)。例如,在chrome中,您可以使用命令行启动它,以允许这样做:

    chrome.exe --allow-file-access-from-files
    
        2
  •  5
  •   Sharad    15 年前

    在Mozilla文件中,URI有更严格的源站策略限制。 https://developer.mozilla.org/En/Same-origin_policy_for_file:_URIs 但是,您可以通过以下方式请求全局访问权限,从而超越:

     if (navigator.userAgent.indexOf("Firefox") != -1) {
                try {
                    netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
                } 
                catch (e) {
                    alert("Permission UniversalBrowserRead denied -- not running Mozilla?");
                }
            }