[英]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.