我已经将一个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
任何想法都会受到赞赏,我真的不知道从哪里开始
答案 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++;
}