我正在开发一个小型ASP.NET站点,其中包含一个包含
的UpdatePanel的简单页面域名为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参考是罪魁祸首,但为什么它首先出现在那里?有谁知道这可能导致什么?
答案 0 :(得分:1)
Browser Link是Visual Studio 2013中引入的一项功能,它使用SignalR提供一些简洁的开发功能。 Here is a 3 minute video demonstrating what Browser Link does
浏览器链接不是尝试连接到您的网站,而是尝试与Visual Studio本身进行通信。除非您使用Visual Studio启动项目,否则不应出现此问题。
这解释了为什么更改web.config以允许CORS对此问题没有影响。我会小心普遍启用CORS,因为如果你不小心,这可能会让你遇到XSS漏洞。
Disabling Browser Link应该解决这个问题。你甚至可以selectively disable Browser Link。