gpt4 book ai didi

java - 无法阻止 Spring 将 https 重定向到 http

转载 作者:行者123 更新时间:2023-12-02 12:36:11 32 4
gpt4 key购买 nike

我正在 Spring Security 上开发项目,一切都很顺利,直到我将项目加载到生产服务器上。我的本地计算机上只有 http,但生产服务器上有 https。

我遇到了一个错误(如果登录错误):

Mixed Content: The page at 'https://my.production.com/login' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://my.production.com/api/login?error=bad-credentials'. This request has been blocked; the content must be served over HTTPS.

和(如果登录成功):

Mixed Content: The page at 'https://my.production.com/login' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://my.production.com/authorities'. This request has been blocked; the content must be served over HTTPS.

我向我的供应商询问了这个问题,但他们说“您的应用程序和 nginx 之间没有 https,所以这是您的应用程序问题”...

我试过this ,但是这个解决方案看起来很奇怪,并不能解决问题(它需要添加很多配置类,我想它应该不会那么难)。实际上我很困惑怎么会发生这种情况,为什么不是重定向到发出请求的模式的默认行为......

我还尝试将其添加到我的 Spring Security 配置中:

 .and().requiresChannel().anyRequest().requiresSecure()

但这只会在我的本地计算机和生产服务器上导致ERR_TOO_MANY_REDIRECTS...

这也没有帮助:

http.portMapper()
.http(8080).mapsTo(8443);

我没有使用 Spring boot,但也尝试过 this ,没有帮助。

成功的身份验证配置如下所示:

SavedRequestAwareAuthenticationSuccessHandler successHandler = new
SavedRequestAwareAuthenticationSuccessHandler();
successHandler.setDefaultTargetUrl(env.getProperty("app.authenticationSuccessUrl"));

最佳答案

当 Apache Tomcat 在 HTTPS(反向)代理后面运行时,可能需要进行一些配置才能使链接和重定向正常工作。

打开conf/server.xml,找到Connector元素,添加以下属性(如果尚不存在):

  • proxyName - 设置为您的域名。
  • proxyPort - 如果您使用标准 https 端口,请将其设置为 443。
  • scheme - 如果使用 https 访问网站,则设置为“https”。
  • 安全 - 对于 https 设置为“true”。
<Connector proxyName="my.production.com" proxyPort="443" scheme="https" secure="true" ...>

引用:Apache Tomcat 7: The HTTP Connector

关于java - 无法阻止 Spring 将 https 重定向到 http,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45128336/

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