java-强制spring数据其余部分使用https方案
作者:互联网
我在应用程序中使用了spring-data-rest,该应用程序是apache反向代理的背后,该代理从HTTP重定向到HTTPS
反过来,这会导致错误的hrefs:http而不是https方案.
例:
{
"_links" : {
"profile" : {
"href" : "http://my.host/api/profile"
}
}
}
有什么方法可以配置spring.data.rest强制使用https方案?
解决方法:
深入研究源代码后,我发现所有链接创建均源于此point,并且似乎无法以“标准”方式配置强制使用https方案.
因此,我创建了一个过滤器,将请求URL中的http://替换为https://,问题已经解决了.这是代码段:
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
final HttpServletRequestWrapper wrapped = new HttpServletRequestWrapper(request) {
@Override
public StringBuffer getRequestURL() {
final StringBuffer originalUrl = ((HttpServletRequest) getRequest()).getRequestURL();
final String updatedUrl = originalUrl.toString().replace("http://", "https://");
return new StringBuffer(updatedUrl);
}
};
filterChain.doFilter(wrapped, servletResponse);
}
标签:spring-data-rest,spring,java 来源: https://codeday.me/bug/20191118/2024880.html