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

我了解要访问RESTful服务,我需要在请求 header 中传递 token ,但是如何获得CSRF token ?

最佳答案

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

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

10-08 03:01