在安全协议 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>
我将 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>