gpt4 book ai didi

apache - 在 Apache Tomcat 中执行从 http 到 https 的 301 重定向

转载 作者:行者123 更新时间:2023-11-28 21:45:22 25 4
gpt4 key购买 nike

我已经在我的网络应用程序中配置了 SSL。我已经按照要求的步骤在我的 Tomcat 中安装了证书。

我一直关注的教程是 https://www.mulesoft.com/tcat/tomcat-security

我强制使用 https 而不是 http,这意味着对 http 的任何请求都将转发到 https。我在 server.xml 中进行了以下更改

<Connector port="8080" protocol="HTTP/1.1" 

connectionTimeout="20000"

redirectPort="443"

proxyHost="10.1.1.1" proxyPort="80"

URIEncoding="UTF-8"

maxHttpHeaderSize="32768"/>

web.xml变化如下:

<security-constraint>
<web-resource-collection>
<web-resource-name>SecureConnection</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>

但是,正在进行的重定向是临时重定向,即 302。我想使用 301 重定向,即永久重定向。

我怎样才能做到这一点?

最佳答案

这是在您的 Realm 上配置的。请参阅您的特定 Realm 实现的 transportGuaranteeRedirectStatus 属性。

https://tomcat.apache.org/tomcat-8.5-doc/config/realm.html

例如:server.xml 有这个开箱即用的

  <Realm className="org.apache.catalina.realm.LockOutRealm">
<!-- This Realm uses the UserDatabase configured in the global JNDI
resources under the key "UserDatabase". Any edits
that are performed against this UserDatabase are immediately
available for use by the Realm. -->
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
</Realm>

它没有设置 transportGuaranteeRedirectStatus 所以它默认为 302。如果你想让它使用 301,只需将属性 transportGuaranteeRedirectStatus="301" 添加到顶部级别领域(根据您的配置,您可能没有嵌套领域)并重新启动 Tomcat。

例如:

  <Realm className="org.apache.catalina.realm.LockOutRealm" transportGuaranteeRedirectStatus="301">
<!-- This Realm uses the UserDatabase configured in the global JNDI
resources under the key "UserDatabase". Any edits
that are performed against this UserDatabase are immediately
available for use by the Realm. -->
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase" />
</Realm>

如果您没有在配置中定义 Realm 标签,Tomcat 将默认使用 NullRealm .如果您想在这种情况下覆盖重定向,您只需要定义一个 NullRealm,并在其上设置 transportGuaranteeRedirectStatus 属性。

希望对您有所帮助!

关于apache - 在 Apache Tomcat 中执行从 http 到 https 的 301 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32817514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com