![](/img/trans.png)
[英]How do I send CSRF tokens from AngularJS front end to Spring REST service backend?
[英]How do I send spring csrf token from Postman rest client?
我在 spring 框架中有csrf 保护。 因此,在每个请求中,我从 ajax 调用中发送 header 中的 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 客户端的 header 部分中? 你能帮我从 Postman Rest 客户端发送 csrf 令牌吗?
最简单的方法可以始终如一地执行此操作,因此您不必每次都获取令牌:
注意:您需要安装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的环境变量。
保存您的登录方式
创建要创建的新帖子,并在标题中添加XSRF-Token-Header Key,并在句柄栏中添加环境变量以访问它{{}}
我可以通过以下步骤发送带有csrf令牌的REST:
登录时,Spring安全性会自动生成CSRF令牌。它将显示在响应头中。
通过在标头上设置带有CSRF令牌的X-CSRF-TOKEN,可以在后续请求中使用CSRF令牌。
首先,您需要安装PostMan Interceptor并激活它以访问浏览器cookie。
您必须通过发出GET请求来获取CSRF令牌:标题:“XSRF-TOKEN”和值:“获取”
你应该在cookie选项卡中看到令牌并且可以复制它(注意:你可以配置spring如何命名cookie。也许你的cookie有另一个名字而不是“XSRF-TOKEN”。注意:你有删除这个空白的字符在来自换行符的令牌)
现在制作你的POST请求并将标题设置为:标题:“X-XSRF-TOKEN”和值:“你复制的令牌没有空格”
如果您不想配置环境变量等,这是最快的解决方案
请将X-CSRF-Token作为密钥和FETCH作为GET请求头中的值,您将在响应头中收到令牌
我使用 csrfTokenRepository() 允许 spring 安全生成 csrf 令牌
@EnableWebSecurity
public class AppSecurityConfig extends WebSecurityConfigurerAdapter{
@Override
protected void configure(HttpSecurity http) throws Exception {
// TODO Auto-generated method stub
http.csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse());
// your code
}
}
添加这几行代码后,使用GET请求生成csrf token。 我使用了 postman 并且在响应 cookies 部分中获得了令牌。 复制令牌并在 POST 调用中使用它。
官方文档链接: https://docs.spring.io/spring-security/site/docs/5.0.x/reference/html/csrf.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.