redirect - IE6 和 IE7 在重定向时发送没有主机名的 HTTP/1.1

标签 redirect internet-explorer-6 internet-explorer-7 apache2

我们在我们的 webapp 中使用 Redirect-after-Post 模式。

有时,我们的 apache 日志中显示的错误日志很少,如下所示:

[error] [...] client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23): ...



在我的访问日志中,它们显示为
[...] "GET/xyz/HTTP/1.1"400 226 "-""-"72

这里发生的事情是:应用程序发送一个带有绝对 URL 的重定向,如下所示:

地点:http://www.kicktipp.de/demo/

今天我有三个浏览器,它们请求我们重定向到的 URL,而不需要 Host header :
  • “Mozilla/4.0(兼容;MSIE 7.0;Windows NT 6.0;GTB6;SLCC1;.NET CLR 2.0.50727;媒体中心 PC 5.0;.NET CLR 3.5.30729;.NET CLR 3.561710)”
  • "Mozilla/4.0(兼容;MSIE 6.0;Windows NT 5.1;SV1;.NET CLR 2.0.50727;.NET CLR 3.0.04506.30;.NET CLR 1.1.4322;.0605064LR.NET CLR 1.0650640400400400000004100000040000000404
  • "Mozilla/4.0(兼容;MSIE 7.0;Windows NT 5.1;Mozilla/4.0(兼容;MSIE 7.0;Win32;WEB.DE);Mozilla/4.0(兼容;MSIE 8.0;Win32;WEB.DE);.NET CLR 1.1.4322;InfoPath.1;.NET CLR 2.0.50727;OfficeLiveConnector.1.4;OfficeLivePatch.1.3;.NET CLR 3.0.4506.2152;.NET CLR 3.5.30729)”_091084567

    这些都是正常的访问,用户点击了几个页面,然后重定向并失败并出现错误。

    我知道一些旧的浏览器需要 http/1.1 的帮助,所以我们有默认的 debian setenv 配置:
    <IfModule mod_setenvif.c>
    
    #
    # The following directives modify normal HTTP response behavior to
    # handle known problems with browser implementations.
    #
    BrowserMatch "Mozilla/2" nokeepalive
    BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
    BrowserMatch "RealPlayer 4\.0" force-response-1.0
    BrowserMatch "Java/1\.0" force-response-1.0
    BrowserMatch "JDK/1\.0" force-response-1.0
    
    #
    # The following directive disables redirects on non-GET requests for
    # a directory that does not include the trailing slash.  This fixes a 
    # problem with Microsoft WebFolders which does not appropriately handle 
    # redirects for folders with DAV methods.
    # Same deal with Apple's DAV filesystem and Gnome VFS support for DAV.
    #
    BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
    BrowserMatch "MS FrontPage" redirect-carefully
    BrowserMatch "^WebDrive" redirect-carefully
    BrowserMatch "^WebDAVFS/1.[012]" redirect-carefully
    BrowserMatch "^gnome-vfs/1.0" redirect-carefully
    BrowserMatch "^XML Spy" redirect-carefully
    BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully
    
    </IfModule>
    

    每 10000 次重定向仅发生一次。但我当然希望满足每个用户和每个浏览器。

    有什么提示可以给我吗?我们是否需要在 mod_setenvif 配置中添加更多浏览器?

  • 最佳答案

    根本原因可能与导致不一致 Accept header 的原因类似。在一个不相关的问题中:

    ACCEPT header 更改为:

  • 当页面被缓存时
  • 当引用者更新时
  • 关于redirect - IE6 和 IE7 在重定向时发送没有主机名的 HTTP/1.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1497337/

    相关文章:

    apache - 在 htaccess 中强制使用非 SSL 只能部分起作用

    css - block 级元素列表在 IE6 中被拆分

    css - CSS 中的 top 属性不适用于 Internet Explorer 6

    html - 有人知道解决 IE 7 CSS 问题的通用方法吗?

    html - IE7显示:block

    .htaccess - 将所有流量重定向到 SSL,某些域除外

    url - 如何在 IIS 8 中编写重写规则,以便所有流量从 http ://www. com 指向 https ://*. *.com?

    css - IE6 布局问题 - 应该非常简单

    javascript - 如何加快 IE7 中的应用程序运行时间?

    ruby-on-rails - 使用 Rails 深度重定向回 : (history. go(-N))