如何从 Postman rest 客户端发送 spring csrf 令牌?

新手上路,请多包涵

我在 spring 框架中有 csrf 保护。因此,在每个请求中,我都会从 ajax 调用的标头中发送 csrf 令牌,这非常有效。

 <meta name="_csrf" content="${_csrf.token}"/>
<meta name="_csrf_header" content="${_csrf.headerName}"/>

var token = $("meta[name='_csrf']").attr("content");
var header = $("meta[name='_csrf_header']").attr("content");

在阿贾克斯

beforeSend: function(xhr) {
                xhr.setRequestHeader(header, token),
                xhr.setRequestHeader("username", "xxxx1"),
                xhr.setRequestHeader("password", "password")
            }

我不知道 生成 csrf 令牌并将其包含在 Postman Rest Client 的标头部分中 吗?你能帮我从 Postman Rest 客户端发送 csrf 令牌吗?在此处输入图像描述

原文由 Surendra Jnawali 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 827
2 个回答

始终如一地执行此操作的最简单方法,因此您不必每次都获取令牌:

注意:您需要安装 PostMan 拦截器并激活它才能访问浏览器 cookie

  1. 创建一个新环境,以便可以存储环境变量

在此处输入图像描述

  1. 创建一个带有测试的登录方法,将 XSRF cookie 存储在环境变量中,在测试选项卡中发布此代码
   //Replace XSFR-TOKEN with your cookie name
   var xsrfCookie = postman.getResponseCookie("XSRF-TOKEN");
   postman.setEnvironmentVariable("xsrf-token", xsrfCookie.value);

编辑 对于使用 5.5.2 邮递员或更高版本的任何人,您还必须解码 cookie,并且他们还提供了获取 cookie 的替代方法,正如@Sacapuces 指出的那样

pm.environment.set("xsrf-token", decodeURIComponent(pm.cookies.get("XSRF-TOKEN")))

现在您将拥有一个包含 xsrf-token 的环境变量。

  1. 保存您的登录方式

  2. 创建您要创建的新帖子,并在标题中添加您的 XSRF-Token-Header 密钥,并在手柄栏中添加环境变量以访问它{{}}

在此处输入图像描述

  1. 现在在运行你的新请求之前确保你运行你的登录,它将存储环境变量,然后当你运行实际请求时它会自动附加它。

原文由 johnny 5 发布,翻译遵循 CC BY-SA 3.0 许可协议

我可以按照以下步骤发送带有 csrf 令牌的 REST:

  1. 登录时spring security自动生成的CSRF token,会显示在响应头。

  2. 通过在标头上设置带有 CSRF 令牌的 X-CSRF-TOKEN,可以在后续请求中使用 CSRF 令牌。

原文由 tranceholic 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题