有两件事:
1)我的应用程序使用ELB(负载均衡器)和CloudFront部署在AWS云上。当前流程为:用户访问CloudFront的公共URL - > CloudFront将其重定向到我的ELB。
2)我使用Spring Hatoeas构建我的API响应,特别是使用ControllerLinkBuilder来获取控制器方法的URL。
现在问题来了。 当我尝试在CloudFront的公共URL上调用API时,我在响应中获取了ELB URL而不是CloudFront的公共URL:
{
"something": "something",
"_links": {
"something": {
"href": "http://{elb_url}/api/something"
}
}
}
而不是:
{
"something": "something",
"_links": {
"something": {
"href": "https://{public_cloudfront_url}/api/something"
}
}
}
因为应用程序实际部署在ELB URL而不是公共CloudFront URL ...