我正在尝试调用启用了 CSRF 的服务,并且其所有端点都配置为向用户请求身份验证 header 。
我使用 Spring RestTemplate 如下:
ResponseEntity<String> responseEntity = getRestTemplate().exchange(
"localhost:9090/",
"HEAD",
entity,
String.class);
return responseEntity.getBody();
但是,我无法从响应中读取 header ,因为我收到 HTTP 401
错误。
我的解决方法是从 RestTemplate 抛出 HttpClientErrorException
的异常中读取 token 。像这样:
exception.getResponseHeaders().get("Set-Cookie");
for (String header : headers) {
if (header.startsWith("XSRF-TOKEN")) {
token = header.split("=")[1];
break;
}
}
有没有办法获取 XSRF-TOKEN token 而不依赖于从异常中读取它?
最佳答案
使用 GET 方法访问时不会出现异常。因此,我将创建一个获取端点来检索 token ,然后将其用于下一个 POST 调用。
希望这种方法有意义。
关于java - 使用 Spring RestTemplate 请求 XSRF-TOKEN 时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45426049/