我实现了一个ajax轮询脚本,该脚本每10秒在服务器Controller中调用一次操作。通过响应,我替换了的内容div:
div
function getFoo() { var link = '/Secure/GetFoo'; $.post(link, function (response) { $('#FooSection').replaceWith(response); }); setTimeout("getFoo();", 10000); }
这是通过 https 完成的。经过一段时间的“空闲”,IE会显示以下消息:
该页面正在访问不受其控制的信息。这带来了安全风险。你想继续吗?
如果用户单击“ 是” ,则页面将重定向到div仅显示响应的页面。如果用户单击“ 否” ,则什么都不会发生,但是div不会刷新容器。
我知道我可以通过浏览器设置隐藏此消息,但这只会使我进入上述对话框的默认“ 是” 选择。
之前也曾提出过类似的问题,但不幸的是,目前还没有任何解决方案。我基本上希望即使在 安全 连接上也可以进行我的Ajax轮询工作。有任何想法吗?
您永远不会在Internet-Zone页面上看到该对话框。默认情况下,此操作会在Internet区域中自动静音并被自动阻止。
该对话框出现在Intranet区域中有两个根本原因:
1>尝试使用XMLHTTPRequest对象进行跨域请求(http://blogs.msdn.com/b/ieinternals/archive/2011/04/22/ie- security-prompt-page-accessing-cross-domain -信息不属于它的控件.aspx)
2>尝试将承载HTML的OBJECT标签导航到跨源页面。
您可以通过使用XDomainRequest而不是XMLHTTPRequest来避免情况#1。通过使用IFRAME而不是OBJECT标签,可以避免情况#2。