我在spring框架中有 csrf protection 。所以在每个请求中,我从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令牌吗?
答案 0 :(得分:34)
始终如一地执行此操作的最简单方法,因此您不必每次都获取令牌:
注意:您需要安装PostMan Interceptor并将其激活以访问浏览器cookie
使用测试创建一个登录方法,将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 :(得分:10)
我可以通过以下步骤发送带有csrf令牌的REST:
当您登录时,Spring安全性会自动生成CSRF令牌。它将显示在响应标题中。
通过在标题上设置带有CSRF令牌的X-CSRF-TOKEN,可以在后续请求中使用CSRF令牌。
答案 2 :(得分:6)
首先,您需要安装PostMan Interceptor并将其激活以访问浏览器cookie。
您必须通过发出GET请求来获取CSRF令牌: 标题:“XSRF-TOKEN”和值:“获取”
你应该在cookie选项卡中看到令牌并且可以复制它(注意:你可以配置spring如何命名cookie。也许你的cookie有另一个名字而不是“XSRF-TOKEN”。注意:你有从换行符中删除令牌中的空白字符
现在发出你的POST请求并将标题设置为:标题:“X-XSRF-TOKEN”和值:“你复制的令牌没有空格”
答案 3 :(得分:3)
答案 4 :(得分:1)
如果您不想配置环境变量等,这里是最快的解决方案
答案 5 :(得分:1)
请将 X-CSRF-Token 作为密钥,并将 FETCH 作为GET请求标头中的值,您将在响应标头中收到令牌