Hi,

I have a question about the UriBuilder provided by the Aries JAX-RS
Whiteboard implementation.

Assume a very simple REST endpoint:

===
@Component(service = { Resource.class }, scope = ServiceScope.PROTOTYPE)
@JaxrsResource
public class Resource {
    @POST
    @Path("create")
    @Produces(MediaType.APPLICATION_JSON)
    public Object createTest(@Context final UriInfo uriInfo) {
        final URI uri =
uriInfo.getBaseUriBuilder().path("foo").path("bar").build();
        return Response.created(uri).build();
    }
}
===

If I call the post method of that endpoint using the URL
"http://localhost:8080/create"; I get a created location that looks
like "http://localhost:8080/foo/bar";.

All fine.

===
$ curl -v -X POST http://localhost:8080/create
*   Trying ::1:8080...
* TCP_NODELAY set
* Connected to localhost (::1) port 8080 (#0)
> POST /create HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.67.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 201 Created
< Date: Tue, 10 Dec 2019 17:41:47 GMT
< Location: http://localhost:8080/foo/bar
< Content-Length: 0
<
* Connection #0 to host localhost left intact
===

But, I would expect if I access the endpoint using the IP instead of
the hostname "http://127.0.0.1:8080/create"; the created response's
location should look like "http://127.0.0.1:8080/foo/bar";.

But that is not the case...

The response provides "http://localhost:8080/foo/bar";

===
curl -v -X POST http://127.0.0.1:8080/create
*   Trying 127.0.0.1:8080...
* TCP_NODELAY set
* Connected to 127.0.0.1 (127.0.0.1) port 8080 (#0)
> POST /create HTTP/1.1
> Host: 127.0.0.1:8080
> User-Agent: curl/7.67.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 201 Created
< Date: Tue, 10 Dec 2019 17:44:00 GMT
< Location: http://localhost:8080/foo/bar
< Content-Length: 0
<
* Connection #0 to host 127.0.0.1 left intact
===

I the website that is accessed using 127.0.0.1 provides a location
using localhost and that one is used by the browser, the browser fails
because of CORS.

Why is not the host of the request used if a new URI is build that way?

Best regards,
Markus

Reply via email to