Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法停止Spring将https重定向到http_Java_Spring_Redirect_Nginx_Spring Security - Fatal编程技术网

Java 无法停止Spring将https重定向到http

Java 无法停止Spring将https重定向到http,java,spring,redirect,nginx,spring-security,Java,Spring,Redirect,Nginx,Spring Security,我正在一个springsecurity上开发项目,在我将项目加载到生产服务器之前,一切都很顺利。我在本地计算机上只有http,但在生产服务器上有https 我遇到了一个错误(在登录错误的情况下): 和(如果登录成功): 我问过我的供应商这个问题,但他们说“你的应用程序和nginx之间没有https,所以这是你的应用程序的问题” 我试过了,但这个解决方案看起来很奇怪,并不能解决问题(它需要添加很多配置类,我想这应该不会太难)。实际上,我很困惑这是怎么发生的,为什么重定向到发出请求的模式不是默认行为

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

我遇到了一个错误(在登录错误的情况下):

和(如果登录成功):

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

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

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

 .and().requiresChannel().anyRequest().requiresSecure()
但这只会在我的本地机器和生产服务器上导致
错误\u太多\u重定向

这也无济于事:

http.portMapper()
                .http(8080).mapsTo(8443);
我没有使用Spring boot,但也尝试过,没有帮助

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

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

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

打开conf/server.xml,找到
连接器
元素,如果尚未存在,则添加以下属性:

  • proxyName
    -设置为您的域名
  • proxyPort
    -如果使用标准https端口,则将其设置为443
  • 方案
    -如果使用https访问站点,则设置为“https”
  • secure
    -将https设置为“true”


参考资料:

除非您的webapp中硬编码了“http”,否则这可能是由于生产服务器配置不正确造成的。nginx是否作为一个代理,背后有类似Tomcat的东西?@holmis83是的,背后有nginx和Tomcat,所以我应该问我的供应商关于解决这个问题的问题吗?谢谢你的回答,但供应商解决了我的问题,它是在服务器端解决的。
http.portMapper()
                .http(8080).mapsTo(8443);
SavedRequestAwareAuthenticationSuccessHandler successHandler = new
                SavedRequestAwareAuthenticationSuccessHandler();
        successHandler.setDefaultTargetUrl(env.getProperty("app.authenticationSuccessUrl"));