【问题标题】:Why am I getting a Same-origin policy error while all files are locally in the same directory?当所有文件都在本地同一目录中时,为什么我会收到同源策略错误?
【发布时间】:2018-08-11 17:42:42
【问题描述】:

我有一个主 html 文件,它通过 iframe 在同一目录中加载另一个 html 文件。主页上有一个按钮,它针对 iframe 中的 html 文件。它正在使用这个功能:

    <script>
function myFunction() {
    var x = document.getElementsByTagName("iframe")[0].contentWindow;
    x.exportRoot.gotoAndPlay(2);
}
</script>

Live 它按预期工作:当我单击按钮时,它会从 iframe 内启动 Animate CC 动画。但是,当我在本地查看文件时,我在控制台窗口中收到此错误消息:

SecurityError(DOM 异常 18):阻止原点为“null”的帧访问原点为“null”的帧。协议、域和端口必须匹配。

我读过这与同源政策有关。如果主页与 iframe 页面位于另一个域中,这将是有意义的。但是两个html文件都在本地同一目录中。

我的浏览器(尝试过 Safari 和 Chrome)仍然将其视为两个不同的域?有什么我可以改变的让它在本地也能工作吗?

【问题讨论】:

  • 本地的意思是协议是file:///?如果是这样的话,本地加载的文件在同源策略中更加严格
  • 我建议你发布你的&lt;iframe&gt;标签。
  • 我正在使用的确实是 file:///。所以我可以在上线之前测试 html 文件。那么在本地测试时有什么方法可以绕过同源策略吗?
  • 你能用火狐吗?它没有 Safari 那样严格。见codeproject.com/Questions/1195078/…。或者使用本地网络服务器。
  • @jiggy1965 直到 / 的域必须完全相同。

标签: javascript html


【解决方案1】:

要在本地进行开发,您应该使用简单的 Web 服务器。您只需不到 2 分钟即可完成设置。这里有一堆

What is a faster alternative to Python's http.server (or SimpleHTTPServer)?

请勿在您的浏览器中禁用网络安全。一次健忘的点击,您的机器可能会被拥有。即使您认为风险很低,既然使用简单 Web 服务器的正确方法如此简单,为什么还要冒任何风险?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-28
    • 2014-12-24
    • 2019-04-17
    • 2018-06-27
    • 2010-12-22
    • 2021-09-28
    • 2013-05-17
    • 1970-01-01
    相关资源
    最近更新 更多