如何使用 Spring RESTful 网络服务处理 CSRF 保护?

How to handle CSRF protection with Spring RESTful web services?

我有一个启用了 CSRF 保护的 Spring Web 应用程序。我可以通过 AJAX 调用访问 RESTful 服务,但是当我使用 httpurlconnection 等其他应用程序访问该服务时,我收到 401 错误(CSRF 令牌为空)。

我知道要访问 RESTful 服务,我需要在请求中传递一个令牌 header,但是我怎样才能获得 CSRF 令牌?

您可以在 Spring MVC 中创建一个获取 CSRF 令牌的映射:

@RequestMapping(value="/csrf-token", method=RequestMethod.GET)
public @ResponseBody String getCsrfToken(HttpServletRequest request) {
    CsrfToken token = (CsrfToken)request.getAttribute(CsrfToken.class.getName());
    return token.getToken();
}