JAX-RS自定义标头未添加到重定向响应中

我试图将一些自定义标头参数添加到HTTP 303(重定向)响应。 但是,新标题似乎从响应中被剥离。

此代码用于接收请求并返回HTTP 303响应:

@POST @Path("/authorize") @Produces("application/x-www-form-urlencoded") public Response getOAuthGrant(@HeaderParam(OAuth2.AUTHORIZATION) @DefaultValue("") String authorization, @HeaderParam(OAuth2.CLIENT_ID) @DefaultValue("") String clientId, @HeaderParam(OAuth2.CLIENT_SECRET) @DefaultValue("") String clientSecret, @HeaderParam(OAuth2.GRANT_TYPE) @DefaultValue("") String grantType) throws InternalServerException, UnauthorizedException { OAuth2.validateGrantRequest(clientId, clientSecret, authorization, grantType); ApiTokenV2 apiTokenV2 = new ApiTokenV2(); try { apiTokenV2 = TokenManager.getApiToken(clientId); if (apiTokenV2 != null) { apiTokenV2.generateAccessGrant(clientId); } else { logger.error("Error in TokenEndpoint. Retrieved token is null."); throw new InternalServerException("A server error occurred while trying to authorize the requester. Could not find 'generateAccessGrant' method"); } } catch (NamingException e) { throw new InternalServerException("A server error occurred while trying to authorize grant request. Could not find 'generateAccessGrant' method.", e); } return Response.status(Response.Status.SEE_OTHER) .type(MediaType.APPLICATION_FORM_URLENCODED_TYPE) .header("Location", "/api/token") .header("Authorization", "OAuth") .header("Access-Grant", apiTokenV2.getAccessGrant()) .build(); } 

我在这做错了什么? 我应该使用@Context吗?

你要做的事情应该是有效的。

 @POST @Path("/authorize") public Response authorize() { return Response.status(Response.Status.SEE_OTHER) .header(HttpHeaders.LOCATION, "/api/token") .header("X-Foo", "bar") .build(); } 

curl执行它:

 % curl -v -X POST http://localhost:8080/WebApplication1/rest/console/authorize * About to connect() to localhost port 8080 (#0) * Trying ::1... connected > POST /WebApplication1/rest/console/authorize HTTP/1.1 > User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3 > Host: localhost:8080 > Accept: */* > < HTTP/1.1 303 See Other < X-Powered-By: Servlet/3.0 JSP/2.2 (GlassFish Server Open Source Edition 3.1.2.2 Java/Oracle Corporation/1.7) < Server: GlassFish Server Open Source Edition 3.1.2.2 < Location: /api/token < X-Foo: bar < Content-Length: 0 < Date: Wed, 07 Nov 2012 08:20:24 GMT < * Connection #0 to host localhost left intact * Closing connection #0 

如您所见,响应代码是

 303 See Other 

并设置了interesing标头:

 Location: /api/token X-Foo: bar