ChromeFrame忽略跨站点导航中的X-UA兼容标头

时间:2013-08-23 11:10:02

标签: .net internet-explorer deployment

我正在尝试将一套Web应用程序从.NET 2.0 WebForms迁移到由WCF Web服务提供的HTML5 Backbone应用程序,并且遇到了相当大的障碍。

并排放置两个网站,每个网站设置web.config,内容如下:

新应用

<httpProtocol>
  <customHeaders>
    <clear />
    <add name="X-UA-Compatible" value="IE=edge,chrome=1" />
  </customHeaders>
</httpProtocol>

传统应用

<httpProtocol>
  <customHeaders>
    <clear />
    <add name="X-UA-Compatible" value="IE=7,9" />
  </customHeaders>
</httpProtocol>

安装了Chrome Frame后,独立访问每个站点似乎工作正常,但是从一个站点到另一个站点的链接与超链接会导致标头被忽略,据我所知。这意味着如果用户从我们的HTML5主页导航到IE7,那么针对IE7的旧代码(与我无关!)就会失败。

之前有没有人遇到过这个问题,如果是的话,你是怎么解决这个问题的?


&LT;的 的antisnark&GT;

让我们假设在启动之前移植所有遗留代码是不可能的。

&LT;的 的/ antisnark&GT;

1 个答案:

答案 0 :(得分:1)

Chrome Frame已停止使用。

最好的办法是切换到Chrome's Legacy Browser Support,这会根据所访问的网站默默切换用户的浏览器。

修改

来自documentation

  

Chrome框架作为封闭容器

     

GCF将所有顶级导航发送到Internet Explorer。这是为了   允许内容加载主机浏览器中的其他链接。此功能   可以通过添加DWORD值HandleTopLevelRequests = 0来关闭   在HKCU \ Software \ Google \ ChromeFrame下。在这种情况下所有的   随后的顶级导航将保留在Chrome Frame中   他们是否有元标记。

因此,要突破CF,您必须在链接上设置target="_top"或使用弹出窗口打开链接 - 只要注册表项HandleTopLevelRequests设置为1。