Internet explorer 在ASP include的标题标记后添加IE边缘元标记

Internet explorer 在ASP include的标题标记后添加IE边缘元标记,internet-explorer,iis,asp-classic,x-ua-compatible,Internet Explorer,Iis,Asp Classic,X Ua Compatible,我在CMS驱动的站点上有数千个页面,这些页面在公司网络中呈现得很差,因为IE将它们视为intranet页面,IE的默认设置是以兼容模式呈现intranet页面 我想在标题标签后插入IE Edge meta标签,以强制浏览器进入其最新版本,但我无法为此编辑每个页面。为了避免在CMS中编辑单个页面或重新生成页面,我认为我应该能够使用服务器端脚本更新所有页面通用的包含。可能吗?我认为它应该是服务器端的,因为在onload中添加meta标记并不强制浏览器模式,但可能我错了 所以我想要这个: <he

我在CMS驱动的站点上有数千个页面,这些页面在公司网络中呈现得很差,因为IE将它们视为intranet页面,IE的默认设置是以兼容模式呈现intranet页面

我想在标题标签后插入IE Edge meta标签,以强制浏览器进入其最新版本,但我无法为此编辑每个页面。为了避免在CMS中编辑单个页面或重新生成页面,我认为我应该能够使用服务器端脚本更新所有页面通用的包含。可能吗?我认为它应该是服务器端的,因为在onload中添加meta标记并不强制浏览器模式,但可能我错了

所以我想要这个:

<head>
...some stuff...
<title>My Title</title>
...some other stuff...
<!--#include virtual="/myinclude.asp"-->
</head>

…一些东西。。。
我的头衔
…其他一些东西。。。
为此:

<head>
...some stuff...
<title>My Title</title>
<meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
...some other stuff...
...rendered include...
</head>

…一些东西。。。
我的头衔
…其他一些东西。。。
…包括。。。

有办法做到这一点吗?或者我没有看到的其他解决方法?

您可以将IIS设置为发送所有服务页面的标题。将步骤描述为:

在IIS7中配置EmulateIE7 HTTP头(通过用户界面)

  • 打开Internet信息服务(IIS)管理器
  • 从连接窗格中选择服务器
  • 右键单击中心任务窗格中的“HTTP响应头”,然后选择“打开功能”
  • 从操作窗格中选择“添加”
  • 添加名为“X-UA-Compatible”且值为“IE=Edge”的自定义标头
  • 它们还具有通过命令行进行更改的步骤

    上有一篇文章为您列出了可能的值及其作用

    Emulate IE8 mode --> IE=EmulateIE8 Emulate IE7 mode --> IE=EmulateIE7 IE5 mode --> IE=5 IE7 mode --> IE=7.5 IE8 mode --> IE=8 Edge mode --> IE=Edge 模拟IE8模式-->IE=模拟IE8 模拟IE7模式-->IE=模拟IE7 IE5模式-->IE=5 IE7模式-->IE=7.5 IE8模式-->IE=8 边缘模式-->IE=边缘
    事实证明,您可以使用以下命令向标题添加内容:

    <%  Response.AddHeader "CustomHeader","CustomValue" %>
    
    
    
    看起来我把它放在页面的什么地方并不重要,所以我可以把它放在公共include中,所有页面都会得到自定义的标题。在这种情况下:

    <% Response.AddHeader "X-UA-Compatible","IE=Edge,chrome=1" %>
    
    
    
    但愿我早点知道这件事!以下是规格:


    好的,这是有道理的,尽管我没有访问IIS的权限,并且必须发送请求以查看是否可以完成。还有内联网页面和我不想更改的旧页面。没有其他方法可以从包含中强制它,这实际上是我自己可以做到的?@Kfunk除了在IIS上设置标题外,没有简单的方法可以更改所有页面,除非所有页面的标题中已经有一个通用的包含(这听起来与最初的问题不同)。可能有一些具有可比性模式的快乐媒介,允许CMS正确运行,而不会对服务器的其他部分产生负面影响-这就是为什么我要包括更大的选项列表的部分原因。在我想要影响的所有页面中,头部都有一个包含,就像在我的简短示例中一样。我的理解是,UA元标记必须直接位于标题之后才能正确工作,这就是问题所在。就像这个答案:。难道没有一个服务器端脚本可以做同样的事情,比如这个PHP答案吗@Kfunk有一种发送自定义标题的方法,但如果我没记错的话,它必须在您将任何HTML发送到浏览器之前发送。谢谢您的想法-您给我的信息非常有用。如果我不是一个傻瓜,我会给你打勾。最终,这让我找到了我认为适合我的情况的正确解决方案(参见我的答案),使用
    Response.AddHeader
    。对于未来的读者来说,这种方法有效的原因是默认情况下IIS5+缓冲内容并“修复”发送信息的顺序。与…共事过。。。更老的IIS的版本我还在想那些日子,你发送的东西的顺序很重要。如果你关闭缓冲,信息的顺序将再次重要。对于潜伏者来说:Chrome标签已经过时/停止使用2014年第一季度。