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

问题描述 投票:41回答:6

我在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
6个回答
34
投票

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

注意:您需要安装PostMan Interceptor并将其激活以访问浏览器cookie

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

enter image description here

  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 Key,并在句柄栏中添加环境变量以访问它{{}}

enter image description here

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

10
投票

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

  1. 登录时,Spring安全性会自动生成CSRF令牌。它将显示在响应头中。
  2. 通过在标头上设置带有CSRF令牌的X-CSRF-TOKEN,可以在后续请求中使用CSRF令牌。

6
投票

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

  1. 您必须通过发出GET请求来获取CSRF令牌:标题:“XSRF-TOKEN”和值:“获取”
  2. 你应该在cookie选项卡中看到令牌并且可以复制它(注意:你可以配置spring如何命名cookie。也许你的cookie有另一个名字而不是“XSRF-TOKEN”。注意:你有删除这个空白的字符在来自换行符的令牌)
  3. 现在制作你的POST请求并将标题设置为:标题:“X-XSRF-TOKEN”和值:“你复制的令牌没有空格”

3
投票

对我而言,工作变量是将X-CSRF-TOKEN添加到标题中。 enter image description here


1
投票

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

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


1
投票

请将X-CSRF-Token作为密钥和FETCH作为GET请求头中的值,您将在响应头中收到令牌

© www.soinside.com 2019 - 2024. All rights reserved.