我在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令牌吗?
最简单的方法可以始终如一地执行此操作,因此您不必每次都获取令牌:
注意:您需要安装PostMan Interceptor并将其激活以访问浏览器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的环境变量。
我可以通过以下步骤发送带有csrf令牌的REST:
首先,您需要安装PostMan Interceptor并激活它以访问浏览器cookie。
如果您不想配置环境变量等,这是最快的解决方案
请将X-CSRF-Token作为密钥和FETCH作为GET请求头中的值,您将在响应头中收到令牌