【问题标题】:Firefox cross origin error for iframe with same domain page具有相同域页面的 iframe 的 Firefox 跨源错误
【发布时间】:2014-12-12 12:56:02
【问题描述】:

我正在开发一个小型 ASP.NET 站点,该站点有一个简单的页面,其中包含一个 UpdatePanel,其中包含

  • 固定大小的 div,显示为模式弹出窗口
  • 关闭按钮
  • 一个 iframe,它的来源是来自同一域的普通页面

域名为http://localhost:8080,代码如下:

<asp:UpdatePanel ID="Popup" UpdateMode="Conditional" runat="server">
<ContentTemplate>
    <div id="Container" class="modal" runat="server">
        <div>
            <asp:LinkButton OnClick="ClosePopup" runat="server" />
            <div>
                <iframe src="http://localhost:8080/somepage" />
            </div>
        </div>
    </div>
</ContentTemplate>

在 Firefox 中,仅打开和关闭弹出窗口就足以导致以下错误:

"Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:51057/2a5e6f1d3ba752cf/arterySignalR/poll?transport=longPolling&amp;connectionToken=AQAAANCMnd8BF..."

我阅读了很多帖子,但它们似乎都处理实际的跨域请求,就代码而言,这里不是这种情况。我尝试将以下内容放在 web.config 中,但没有区别:

<httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
  </customHeaders>
 </httpProtocol>

除了打开和关闭弹出窗口外,不执行任何代码。消息出现后似乎发生了 ClosePopup 事件,但这可能只是由一些 VS2013 延迟引起的。该站点不使用 SignalR,但错误包含 SignalR 引用。

功能不受影响,但我想了解为什么会发生这种情况。该错误仅发生在 Firefox (34) 中。显然 SignalR 参考是罪魁祸首,但为什么它首先会存在呢?有谁知道是什么原因造成的?

【问题讨论】:

    标签: asp.net firefox signalr


    【解决方案1】:

    Browser Link 是 Visual Studio 2013 中引入的一项功能,它使用 SignalR 提供一些简洁的开发功能。 Here is a 3 minute video demonstrating what Browser Link does.

    Browser Link 不会尝试连接到您的网站,而是尝试与 Visual Studio 本身进行通信。除非您使用 Visual Studio 启动项目,否则不应出现此问题。

    这解释了为什么更改 web.config 以允许 CORS 对此问题没有影响。我会小心地普遍启用 CORS,因为如果你不小心,这可能会让你面临 XSS 漏洞。

    Disabling Browser Link 应该可以解决这个问题。你甚至可以selectively disable Browser Link

    【讨论】:

      猜你喜欢
      • 2020-10-01
      • 2010-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 2015-05-21
      相关资源
      最近更新 更多