Search code examples
reverse-proxyhateoas

What headers should be used when combining URI-rewrites and HATEAOS?


Let's say I have a Foo service that accepts requests like:

http://foo-service/bar/baz

...and returns HATEOAS-style responses:

{
  "self": "http://foo-service/bar/baz"
}

(Yes it should be links, href, etc - I'm simplifying for this question).

Now suppose I want to put that behind a reverse-proxy that also rewrites URI paths:

http://router/foo/bar/baz

(Here, I'm detecting the path starts with /foo/..., and so the reverse-proxy knows what service to route to. I would expect the self link to be "http://router/foo/bar/baz", even though the reverse-proxy actually made a request to http://foo-service/bar/baz).

I know about the Host: and X-Forwarded-Host: headers for specifying what the original request host was.

What is the correct header (or more generally, what is the correct way) for specifying the original path?


Solution

  • Finally found a possible answer: it seems to be X-Forwarded-Prefix.

    eg: HATEOAS paths are invalid when using an API Gateway in a Spring Boot app