在安全协议 https 后面使用 spring-HATEOAS

Using spring-HATEOAS behind Secure protocol https

我将 HATEOAS 用于我的 REST API,它在 https 之后,但 link 留在 http。

"links": [
      {
        "rel": "self",
        "href": "http://..."
      },
      {
        "rel": "object",
        "href": "..."
      }
    ]

是否可以将 HATEOAS 配置为指向我的 https?

这是一种方法,通过 ControllerLinkBuilder:

Link selfLink = new Link(ControllerLinkBuilder.linkTo(methodOn(Mycontroller.class).someMethod()).toUriComponentsBuilder().scheme("https").build().toUriString(), Link.REL_SELF);

这应该会生成一个 Link,其中包含 self rel 和以下形式的 URI:https://host:port/contextroot/pathtocontrollermethod

我通过将 header 指定为虚拟主机配置的一部分解决了我的问题

<VirtualHost *:443>
    RequestHeader set X-Forwarded-Proto "https"
    ProxyPreserveHost On
    ServerName www.example.com

    SSLEngine On
    SSLCertificateFile /etc/apache2/ssl/server.crt
    SSLCertificateKeyFile /etc/apache2/ssl/server.key

    <Location/>
        SSLRequireSSL
    </Location>

    ProxyPass / http://127.0.0.1:9000/
    ProxyPassReverse / http://127.0.0.1:9000/
</VirtualHost>