我在我的应用程序中使用spring-data-rest,它是从HTTP重定向到HTTPS的apache反向代理的背后
这又会导致错误的href:http
而不是https
计划。
示例:
{
"_links" : {
"profile" : {
"href" : "http://my.host/api/profile"
}
}
}
我有什么方法可以配置spring.data.rest
强制使用https方案吗?
答案 0 :(得分:3)
在深入了解源代码后,我发现所有链接创建都来自此point,并且似乎无法在标准中配置强制使用https方案'办法。
因此,我在请求网址中创建了一个将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);
}
答案 1 :(得分:0)
实际上,Spring Data Rest使用HATEOAS,它支持来自代理请求的特殊标头,请查看以下内容:
您要查找的标题为:X-Forwarded-Proto
答案 2 :(得分:0)
我有点不确定但是。我做了以下操作,似乎链接有效。
server:
forward-headers-strategy: NATIVE