【发布时间】: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&connectionToken=AQAAANCMnd8BF..."
我阅读了很多帖子,但它们似乎都处理实际的跨域请求,就代码而言,这里不是这种情况。我尝试将以下内容放在 web.config 中,但没有区别:
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
除了打开和关闭弹出窗口外,不执行任何代码。消息出现后似乎发生了 ClosePopup 事件,但这可能只是由一些 VS2013 延迟引起的。该站点不使用 SignalR,但错误包含 SignalR 引用。
功能不受影响,但我想了解为什么会发生这种情况。该错误仅发生在 Firefox (34) 中。显然 SignalR 参考是罪魁祸首,但为什么它首先会存在呢?有谁知道是什么原因造成的?
【问题讨论】: