简体   繁体   中英

ShellInABox not working in IE11

I've integrated a shellinabox terminal into my rails application, but when I try to access it in IE11 it says 'Page cannot be displayed'. It works in all the other browsers I've tested, including other versions of IE, just not IE11. Requests are routed to the shellinabox daemon by the following lines in my apache config:

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

Any ideas would be appreciated, I really don't know where to start on this one

I came across this problem today and solved it. ShellInABox has implemented a fix for the IE which wont be able to handle compressed SSL data. But to enable this fix it only checks the useragent string which no longer includes MSIE since IE11. So you have to change it to Trident.

This patch works for me

--- 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++;
   }

Hope to help many others out there :)

my Fix to support Edge also:

--- 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++;
   }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM