我的Web应用程序在共享服务器(Websphere)中运行,现在我的应用程序同时运行HTTP和HTTPS请求。通常在应用程序运行时,它显示如下 https://localhost:9443/index.jsp。 如果用户尝试将https更改为http并提交请求,则服务器接受该请求。我需要避免这种情况,并使应用程序仅支持应用程序级别的https请求。请有人帮助我。
答案 0 :(得分:1)
<security-constraint>
<web-resource-collection>
<web-resource-name>https</web-resource-name>
<description>No Description</description>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<description>No Description</description>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
在您的web.xml中添加上述user-data-constraint
。这会将所有http
请求重定向到https
。
答案 1 :(得分:0)
拒绝用户非https连接的另一种方法是简单地删除http传输链;转到应用程序服务器&gt;你的服务器&gt; Web容器传输链,选择WCInboundDefault并单击删除。现在,您只能使用WCInboundDefaultSecure传输链,它会侦听SSL端口。
另一个同样有效的替代方法是在虚拟主机上删除非https端口的主机别名&gt; default_host&gt;主机别名 - 这感觉就像一个不太残酷的配置改变:)
如果您更喜欢重定向而不是限制,我建议您在点击应用服务器之前执行此操作,例如在Web服务器或负载均衡器上。如果您在WAS前使用Apache HTTP服务器或IBM HTTP Server,则可以使用mod_rewrite管理重定向。
答案 2 :(得分:0)
验证WebSphere管理控制台中是否已启用全局和应用程序安全性。