我们调用后端2个rest服务(A,B) (GET方法),这两个服务有不同的凭证(用户名和密码),但我们遇到了奇怪的行为:
1-如果我们先调用A,认证成功,但是如果我们调用B,我们将收到forbidden (认证失败)
然后,我们再次部署应用程序,并执行以下方案:
2-先调用B,鉴权成功,但是如果我们调用A,我们会收到forbidden (鉴权失败):
以下是调用后端服务的示例代码:
HttpResponse<String> resp;
try {
resp = Unirest.get(url)
.basicAuth(username,password).asString();
String jsonstr = resp.getBody();
} catch (Exception e) {
e.printStackTrace();
throw e;
}有什么帮助吗?
发布于 2017-08-09 22:59:37
问题是HTTP客户端在幕后缓存JSESSIONID cookie。我已经切换到位于以下位置的库的OpenUnirest 2.2.08+版本:https://github.com/OpenUnirest/unirest-java
现在,我可以设置禁用cookie管理的选项,这样就解决了基本的身份验证缓存问题。
Options.enableCookieManagement(false);有关更多信息,请参阅发行票证:https://github.com/OpenUnirest/unirest-java/issues/30
https://stackoverflow.com/questions/45304424
复制相似问题