起初 - 我对Java很新。我正在开发一个使用Shiro的应用程序,我已经定义了一个用于注销的REST。它有一个重定向内部,在Chrome中使用开发工具时为我提供了302 Found Status Code:
Parsley.setLocale('de');
问题是,我无法使用Postman获得此状态,或者只是在测试中调用它:
return Response.temporaryRedirect(redirectionAddress).build();
在调用其余部分之后,我只获得200个没有302重定向的OK代码。当服务器端没有会话时,它可能是响应。在Postman我使用Basic Auth,但在HttpGet中没有授权,因为我不知道该怎么做。我尝试添加标题,但它也不起作用:
HttpUriRequest request = new HttpGet("http://localhost:8080/shop/logout/);
HttpResponse httpResponse = HttpClientBuilder.create().build().execute(request);
我应该首先调用登录休息而不是注销吗?有没有选项可以在没有登录的情况下测试注销?
答案 0 :(得分:1)
Apache HttpClient执行自动重定向处理,请参阅HttpClient Tutorial:
<强> 1.7。重定向处理
HttpClient自动处理所有类型的重定向,但HTTP规范明确禁止的需要用户干预的重定向除外。
See Other
(状态代码303)重定向POST
,PUT
请求将根据HTTP规范的要求转换为GET请求。
但您可以将其停用,请参阅HttpClientBuilder#disableRedirectHandling
:
禁用自动重定向处理。
您修改过的代码:
HttpUriRequest request = new HttpGet("http://localhost:8080/shop/logout/");
HttpResponse httpResponse = HttpClientBuilder.create().disableRedirectHandling().build().execute(request);