java - 使用 Spring RestTemplate 请求 XSRF-TOKEN 时出现异常

标签 java spring csrf resttemplate

我正在尝试调用启用了 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/

相关文章:

java - spring - 构造函数注入(inject)和覆盖嵌套 bean 的父定义

firefox - 之前设置的 "Samesite: Strict"cookie 在 document.cookie 中不可用 Firefox 和 Safari

java - 使用流和 sum 方法对 BigDecimal 列表求和

java - 你能直接从 eclipse 发布 .war 到 web 服务器吗

java - Spring hibernate : Values not inserting into database

java - 传送门 :actionURL Spring MVC Portlet

asp.net-mvc-3 - ASP.NET MVC3 的 AntiForgeryToken 的实现细节和原理是什么?

php - X-Requested-With header 服务器检查是否足以防止 ajax 驱动的应用程序的 CSRF?

java - 有人可以帮我在单击 JAVA Jbutton 时添加文本吗?

java - 添加新布局、 fragment 或新 Activity ?