IE11:只有特定的服务器

问题描述:

我得到的IE11坏请求错误上的错误400:IE11:只有特定的服务器

  • 服务器:Tomcat的8.5
  • 框架:Struts的1
  • 环境:试生产

  • 错误触发器:通过window.open打开一个url(“带有重音符或汉字的参数动作”);

该错误只发生在使用IE11,Firefox或Chrome浏览器工作。只在特定的环境中。它在Tomcat 8.5的DEV环境下工作。它也适用于带有Websphere 6.1的旧版prod/preprod/dev服务器。我无法在本地重现它,甚至没有更改Tomcat 8 URIEncoding连接器参数。

发生了类似的事情发生在任何人?就目前而言,我发现的一个解决方法是在触发window.open之前使用Javascript encodeURI函数,但是我正在寻找导致在特定服务器上失败的真正原因。

我试着改变IE的国际设置来编码网址,并将网站添加到我的安全网站,但错误仍然存​​在。

+0

是否有一些浏览器错误? –

+0

除了400之外,浏览器中没有任何错误。这是一种奇怪的行为,考虑到在其他服务器中部署的相同应用程序在IE中可以正常工作,并且在其他浏览器中相同的服务器也可以正常工作。 – Markos

我发现发生了什么:DEV服务器和Preprod服务器略有不同,DEV有Tomcat 8.5.3,Preprod有Tomcat 8.5.9,在该版本中,URI,Firefox和Chrome在发送到服务器之前对它们进行编码(这就是为什么它不会在这些浏览器中失败),IE发送它们(甚至在编码URL的选项中指定)。所以,对于IE来说,在发送请求之前需要用javascript对它们进行编码。