【发布时间】:2016-07-02 03:55:03
【问题描述】:
有很多手册如何启用从 HTTP 到 HTTPS 的自动重定向。但我需要禁用这样的重定向(根据这个建议SSL everywhere - all the time)。我使用的是 Tomcat 7.x,我需要实现接下来的事情:
-
所有资源都受到保护(通过 web.xml 中的配置)[完成]
<security-constraint> <web-resource-collection> <web-resource-name>Application</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint> - 当有人通过 HTTP 发出请求时 - 返回错误(我猜是 HTTP 状态 403)并且没有任何重定向
我已经尝试在server.xml 中删除redirectPort,
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"/>
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" />
但它只导致重定向到 443 端口(但我预计禁用重定向)。
所以我的问题是:如何禁用从 HTTP 到 HTTPS 的自动重定向并返回错误?
【问题讨论】:
-
巧合的是,我上周遇到了一个类似的问题,我删除了一个 HTTPS 重定向,但无论我更改什么配置,它似乎都保持在原位。结果证明这是我本地 Windows 中的一些缓存,因为它在其他 PC 和同一台 PC 上的“wget”上运行良好。我不确定缓存发生在哪里,但由于所有本地浏览器都遭受了它的影响,我想它是在 Windows 级别。我想我在某个时候做了一个
ipconfig /renew,但不确定这是否有效。长话短说 - 先在另一台电脑上尝试。 -
不幸的是,这个技巧在我的电脑上失败了!
-
嗨 Roman,你能解决这个问题吗?我也遇到了同样的问题,如果你成功解决了,请发布答案。谢谢。
-
@Elina 不,我找不到禁止这种重定向的方法。作为一个选项,您可以完全禁用 HTTP 端口(注释/删除 server.xml 中 80/8080 端口的连接器)