ShellInABox无法在IE11中运行

时间:2014-03-20 10:17:30

标签: ruby-on-rails apache internet-explorer

我已经将一个shellinabox终端集成到我的rails应用程序中,但是当我尝试在IE11中访问它时,它说“页面无法显示”。它适用于我测试的所有其他浏览器,包括其他版本的IE,而不是IE11。请求通过我的apache配置中的以下行路由到shellinabox守护程序:

<Location /shell>
    Order      allow,deny
    Allow      from all
</Location>
RewriteRule ^/shell(.*)$ http://localhost:4200$1 [P]
ProxyPassReverse /shell http://localhost:4200

任何想法都会受到赞赏,我真的不知道从哪里开始

2 个答案:

答案 0 :(得分:5)

我今天遇到了这个问题并解决了它。 ShellInABox已经为IE实现了一个修复程序,它无法处理压缩的SSL数据。但要启用此修复程序,它只会检查自IE11以来不再包含MSIE的useragent字符串。所以你必须把它改成三叉戟。

这个补丁对我有用

--- libhttp/httpconnection.c.orig   2012-04-21 19:30:44.000000000 +0200
+++ libhttp/httpconnection.c    2014-08-28 15:48:06.000000000 +0200
@@ -568,7 +568,7 @@
   // also has difficulties with SSL connections that are being proxied.
   int ieBug                 = 0;
   const char *userAgent     = getFromHashMap(&http->header, "user-agent");
-  const char *msie          = userAgent ? strstr(userAgent, "MSIE ") : NULL;
+  const char *msie          = userAgent ? strstr(userAgent, "Trident") : NULL;
   if (msie) {
     ieBug++;
   }

希望能帮助其他许多人:)

答案 1 :(得分:0)

我的修复支持Edge也是:

--- libhttp/httpconnection.c.original   2012-04-21 19:30:44.000000000 +0200
+++ libhttp/httpconnection.c    2015-09-02 10:48:52.283128781 +0200
@@ -569,6 +569,8 @@ void httpTransfer(struct HttpConnection
   int ieBug                 = 0;
   const char *userAgent     = getFromHashMap(&http->header, "user-agent");
   const char *msie          = userAgent ? strstr(userAgent, "MSIE ") : NULL;
+  if (!msie) msie          = userAgent ? strstr(userAgent, "Trident") : NULL;
+  if (!msie) msie          = userAgent ? strstr(userAgent, "Edge") : NULL;
   if (msie) {
     ieBug++;
   }