【问题标题】:How do I send spring csrf token from Postman rest client?如何从 Postman REST 客户端发送 spring csrf 令牌?
【发布时间】:2015-01-26 18:16:23
【问题描述】:

我在 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");

在 ajax 中

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

我不知道生成 csrf 令牌并包含在 Postman Rest Client 的标题部分中?您能帮我从 Postman Rest Client 发送 csrf 令牌吗?

【问题讨论】:

    标签: spring rest header csrf postman


    【解决方案1】:

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

    注意:您需要安装 PostMan Interceptor 并激活它才能访问浏览器 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 postman 或更高版本的任何人,您还必须解码 cookie,正如@Sacapuces 指出的那样,他们还提供了获取 cookie 的替代方法

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

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

    1. 保存您的登录方式

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

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

    【讨论】:

    • 建议修改 cookie 名称为:postman.getResponseCookie("XSFR-TOKEN")。这适用于基于 SpringBoot 1.4.2.RELEASE 的 JHipster 项目。如果这破坏了其他场景,请在 cmets 中告知或提出修改建议。
    • 要找出您正在使用的邮递员版本,请单击“扳手”--> 从列表中选择“设置”--> 选择“关于”选项卡。您将看到邮递员版本。
    • @johnny5 您能否提供放置位置的屏幕截图 var xsrfCookie = postman.getResponseCookie("XSRF-TOKEN");和 postman.setEnvironmentVariable("xsrf-token", xsrfCookie.value);。请帮忙。
    • @user 我现在不在我的电脑前。但是在第一个屏幕截图中,您可以看到一个名为测试的选项卡。单击该选项卡并将代码放在那里
    • 知道了。但它应该是 X-CSRF-TOKEN 还是 XSRF-TOKEN?当我为我的 web 应用打开 Chrome 控制台时,我看到密钥名称为 X-CSRF-TOKEN。
    【解决方案2】:

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

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

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

    【讨论】:

    • 它对我有用,但有点不同,我从 cookie 选项卡中的 cookie 中获取 CSRF 令牌,并使用标题名称 X-XSRF-TOKEN 在 POST 请求的标题上使用它
    • 我从 Spring Security 发回的标头中复制了 X-CSRF-TOKEN,并简单地将 &amp;_csrf=&lt;token&gt; 添加到我的帖子 URL 中。感谢您的帮助。
    【解决方案3】:

    首先您需要安装 PostMan Interceptor 并激活它以访问浏览器的 cookie。

    1. 您必须通过发出 GET 请求来获取 CSRF 令牌: 标头:“XSRF-TOKEN”和值:“Fetch”

    2. 1234563从换行符中删除令牌中的这个空白字符)
    3. 现在发出您的 POST 请求并将标头设置为:标头:“X-XSRF-TOKEN”和值:“您复制的不带空格的令牌”

    【讨论】:

      【解决方案4】:

      对我来说,将 X-CSRF-TOKEN 添加到标题中的工作变体。

      【讨论】:

      • 如何获取 csrf 令牌?
      【解决方案5】:

      请将X-CSRF-Token作为键,FETCH作为值在GET请求头中,你将在响应头中收到令牌

      【讨论】:

        【解决方案6】:

        如果你不想配置环境变量等,这里是最快的解决方案

        https://stackoverflow.com/a/49249850/3705478

        【讨论】:

          猜你喜欢
          • 2016-04-21
          • 1970-01-01
          • 2021-12-19
          • 2019-04-23
          • 2018-03-19
          • 2018-05-10
          • 1970-01-01
          • 2021-04-03
          • 2021-08-01
          相关资源
          最近更新 更多