编程语言
首页 > 编程语言> > java-强制spring数据其余部分使用https方案

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