乐闻世界logo
搜索文章和话题

How do I send spring csrf token from Postman rest client?

4 个月前提问
4 个月前修改
浏览次数33

1个答案

1

在Spring框架中,为了防止跨站请求伪造(CSRF),通常会对敏感操作进行CSRF保护。当在前端或者测试工具如Postman发送请求时,需要确保携带正确的CSRF令牌。以下是使用Postman发送Spring CSRF令牌的步骤:

步骤 1: 配置Spring Security

首先确保Spring Security配置了CSRF保护。这通常在Spring Security配置类中设置:

java
@EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()); // 其他配置... } }

步骤 2: 获取CSRF令牌

在发送需要CSRF保护的请求之前,首先需要获取CSRF令牌。通常,当你访问应用的某个页面时,Spring会在Cookie中设置一个CSRF令牌,也可能在页面的表单中作为隐藏字段存在。

通过Cookie获取

  1. 使用Postman访问一个受Spring Security保护的页面,如登录页面。
  2. 查看响应Cookies,找到CSRF令牌(通常名为XSRF-TOKEN)。

通过隐藏字段获取

  1. 如果是浏览器环境下,查看页面源代码找到类似 <input type="hidden" name="_csrf" value="xxxx"> 的标签。

步骤 3: 在请求中携带CSRF令牌

获取到CSRF令牌后,需要在进行POST、PUT、DELETE等操作时,在请求中携带这个令牌。

  1. 在Postman中设置请求类型为POST(或其他需要CSRF保护的方法)。
  2. 在Headers中添加CSRF令牌:
    • Key: X-XSRF-TOKEN(根据你的Spring Security配置,这个Header的名字可能不同)
    • Value: [从Cookie或隐藏字段中获取的CSRF令牌值]

步骤 4: 发送请求

配置好所有必要的参数和头部信息后,发送请求到服务器。如果CSRF令牌正确,你的请求应该会被服务器接受和处理。

示例

假设你从登录页面获取了CSRF令牌12345abcde,并且需要向服务器发送一个POST请求:

  • URL: http://example.com/api/data
  • Method: POST
  • Headers:
    • Content-Type: application/json
    • X-XSRF-TOKEN: 12345abcde
  • Body:
    json
    { "data": "value" }

这样设置后,你的POST请求就应该能够顺利通过Spring Security的CSRF检查。

通过这种方式,你可以在Postman中测试那些受CSRF保护的API,确保它们在生产环境中能够正常工作。

2024年7月26日 21:49 回复

你的答案