请求正在发送:
GET https://example.com/testing/123456
Request header:
HOST: abcd.com
我得到的回应:
"_links": {
"self": {
"href": "https://abcd.com/data/api/customers"
}
}
有没有办法得到响应
"_links": {
"self": {
"href": "https://example.com/data/api/customers"
}
}
使用 Hateoas 0.25.1.RELEASE
href 不应采用请求主机标头
一种方法是覆盖getServerName:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.filter.OncePerRequestFilter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@Component
public class RequestWrapperFilter extends OncePerRequestFilter {
@Value("${com.awgtek.host}")
protected String basePath;
@Override
protected void doFilterInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, FilterChain filterChain) throws ServletException, IOException {
HeaderMapRequestWrapper wrappedRequest = new HeaderMapRequestWrapper(httpServletRequest);
filterChain.doFilter(wrappedRequest, httpServletResponse);
}
class HeaderMapRequestWrapper extends HttpServletRequestWrapper {
HeaderMapRequestWrapper(HttpServletRequest request) {
super(request);
}
@Override
public String getServerName() {
return basePath;
}
}
}
见 https://stackoverflow.com/a/47679098/1527469