繁体   English   中英

泽西岛Response.seeOther()未提供HTTP 303状态代码

[英]Jersey Response.seeOther() not giving HTTP 303 status code

我有一个社交网站,其中有一个受限社区。

当访客用户应用成员资格请求时,将生成成员资格请求。 我正在通过REST API执行此任务。

我在firefox中使用RESTClient插件发送请求。

当我发送POST请求以将自己添加到受限社区时,响应就是为此生成的成员资格请求。 因此,基础的HTTP状态代码为303 See Other POST/GET

我得到与会员请求相同的正确响应,但状态代码为200 OK (我认为这是会员请求上GET的代码)。

但是,我需要将其设为303。我也尝试了调试 我的发现是Jersey的Response.seeOther()未返回303。

请帮忙。

代码段如下:

addUserToCommunity方法:

MembershipRequestModel membershipRequest = null;
membershipRequest = communityService.addUserToCommunity(communityId, userId);
if(membershipRequest != null) {
  // Add code 303 if returning membershiprequest
  return seeOther( membershipRequest, 
                   String.valueOf(membershipRequest.getId()), 
                   MembershipRequestRestHandlerImpl.class);
} else {
  return ok(null);
}

seeOther method which in turn calls Response.seeOther() :

public Response seeOther(Object model, String id, Class<?> resource){

  URI location = buildLocation(resource, id);

  return Response.seeOther(location).entity(createResponseItems(model)).build();
}

如果要设置303而不是200响应,请执行以下操作:

httpClient.getParams().setParameter(ClientPNames.HANDLE_REDIRECTS, false);

Location:标头中的重定向URL ist

303-See Other本质上是重定向-浏览器将自动遵循位置标头中提供的URL。 您确定这不是您看到的内容吗? 也就是说,也许您正在使用的firefox插件只是在重定向之后(在幕后),然后在该位置URL上返回GET方法的结果。 尝试使用FireBug,它会向您显示发送的确切请求-您应该能够在其中看到重定向。

这实际上是RESTClient的问题,即; 如马丁所说的浏览器。

浏览器实际上执行重定向,但不提供303。

而是尝试在外壳中使用cURL或使用puTTY来访问URI。 工作正常。

谢谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM