https跳转到http的过程在IE6中存在BUG(Bea-090475)

前段时间做OA系统的https的安全登录功能(以前登录是采用的一般的http方式,后因为安全性考虑需要改成https的方式)在本机测试完全通过。 可是近期同事发现在测试环境下用IE6访问会出现不能访问的问题。我测试了以下,确实存在这样的问题。这个问题仅出现在IE6上,在火狐或IE78上都 没问题。这就很纳闷了。为什么会出现这样的情况呢?

WEB服务器采用的是weblogic10.3。

http:9001

https:9002

使用IE6访问后控制台会出现如下错误:

<Warning> <Security> <BEA-090475> <Plaintext data for protocol HTTP was received from peer 10.32.1.90 - 10.32.1.90 instead of an SSL handshake.>

Description

Plaintext data was received over an SSL connection.

Cause

A peer is trying to send plaintext data directly instead of using SSL.

Action

Check the port and protocol settings on the peer that is trying to connect. It may be pointing to the SSL port by mistake or it may be specifying a plaintext protocol by mistake.

WEBLOGIC的官网说:

问题发生的原因大概是明文数据企图用SSL来通信。

这就奇怪了。我的https在后台校验登录成功后就强制转换到了http方式。并且这一切都在IE78下通过了测试。

跟踪代码发现,在Login.jsp页面已HTTPS的方式提交了数据后,后台过滤器进行数据的校验,校验通过后采用sendRedirect方法跳转到http方式(sendRedirect(http://reyo.cn:9001/test.jsp)),问题就发生在访问validateright.jsp页面的时候。

在validateright.jsp通过request.getRequestURL()获取出来的数据为http://reyo.cn:9002/test.jsp。 我明明在过滤器里面重定向的是9001的端口,在页面获取到的确是9002.和用request.getLocalPort()获取来的9001也不同。 但如果用IE7/8以及火狐来访问的话就不会有这样的问题。同样的访问流程,不同的浏览器向服务器提交的请求端口不同。太奇怪了。

无解。无解。这肯定和后台的代码没多大关系,初步猜测是IE6的一个BUG。尚未证实。

后来把服务器的http和https的端口都改为了默认端口80,443.这样不管IE678,以及火狐都不存在这样的问题。看来是用默认端口不会遇到这样的BUG问题,也暂时作为临时解决方案吧。

原文地址:https://www.cnblogs.com/interdrp/p/3538161.html