spring - Grails 可运行 jar 中的 Spring Security 重定向到 HTTP
问题描述
我在反向代理后面使用 grails 3 可运行 jar 和 spring Security,处理 https 到 http 流量(和 https 到 http 重定向),将其转发到http://my-host:8080
对于我所有的/login/**
电话,grails 正在向 http 发送“302 重定向”
例如,/login/authenticate
XHR 使用 header
Location: http://my-big-ip/login/ajaxSuccess
等重定向。
它没有使用serverURL
我在 application.yml 中设置的参数https://my-big-ip
我的 jar 正在使用嵌入式 tomcat,因为我的 build.gradle 中有这个
compile "org.springframework.boot:spring-boot-starter-tomcat"
我得到的关于这个重定向的日志
2019-03-27 15:56:34,415 DEBUG http-nio-8088-exec-5 org.springframework.security.web.savedrequest.HttpSessionRequestCache - Removing DefaultSavedRequest from session if present
2019-03-27 15:56:34,415 DEBUG http-nio-8088-exec-5 grails.plugin.springsecurity.web.authentication.AjaxAwareAuthenticationSuccessHandler - Redirecting to Ajax Success Url: /login/ajaxSuccess
2019-03-27 15:56:34,415 DEBUG http-nio-8088-exec-5 grails.plugin.springsecurity.web.GrailsRedirectStrategy - Redirecting to '/login/ajaxSuccess'
解决方案
我相信您需要将其添加到您的应用程序/运行时。(groovy | yml):
server."use-forward-headers" = true
这里有很多文档(关于这个和其他事情)https://docs.spring.io/spring-boot/docs/current/reference/html/howto-embedded-web-servers.html可能会有所帮助如果您对其他详细信息感兴趣。
推荐阅读
- c++ - 在 C++ 中打印时如何防止小数四舍五入?
- apache-beam - 如何在 apache Beam 中进一步调试这个丢弃的记录?
- javascript - 'setName' 未在功能组件中定义
- python - 不要在表格中保存信息
- reactjs - React Hook Form 将控制器(值)重置为默认值
- haskell - 如何处理haskell中字符串中的“”
- codeblocks - 在代码块中检测到 C++ 多个定义
- snapcraft - 找不到命令二进制文件 - snapcraft.yaml
- reactjs - 使用 React 路由器设置 React 应用程序以导航组件和 URL 重写以导航 IIS 中的子应用程序
- c# - Neo4jClient 无法反序列化为您提供的对象结构,(参数“内容”),System.ArgumentNullException(参数“输入”)