You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS Code REST Client扩展:如何提取嵌套响应头中的CSRF Token?

如何在VS Code REST Client中提取Set-Cookie头里的csrftoken值?

当然可以提取,给你两种可靠的方法:

方法1:正则表达式提取(推荐)

REST Client支持用regexp过滤器匹配提取,这种方法不管返回的Set-Cookie是单个字符串还是多个Cookie的数组,都能准确捕获csrftoken的值:

@csrf_token = {{getToken.response.headers.Set-Cookie | regexp "^csrftoken=([^;]+)"}}

原理:正则^csrftoken=([^;]+)会匹配以csrftoken=开头的内容,捕获组([^;]+)会提取到第一个分号前的所有字符,也就是你要的csrftoken值。

方法2:字符串拆分法

如果确定返回的Set-Cookie是单个Cookie(字符串形式),可以用split方法拆分:

@token_response = {{getToken.response.headers.Set-Cookie}}
@csrf_token = {{token_response.split(';')[0].split('=')[1]}}

如果Set-Cookie是多个Cookie组成的数组,需要先取第一个元素再拆分:

@token_response = {{getToken.response.headers.Set-Cookie}}
@csrf_token = {{token_response.[0].split(';')[0].split('=')[1]}}

你之前写法的问题

  • 错误用.0访问数组元素:REST Client中数组索引的正确写法是.[index],比如.[0],而不是.0;
  • //[0]不是REST Client支持的变量操作语法,所以会失效。

修改后的完整代码

# Get CSRF Token
# @name getToken

GET http://{{host}}/api/csrf_token

# 推荐使用正则提取
@csrf_token = {{getToken.response.headers.Set-Cookie | regexp "^csrftoken=([^;]+)"}}

# 也可以根据情况选择拆分法(取消注释即可使用)
# @token_response = {{getToken.response.headers.Set-Cookie}}
# @csrf_token = {{token_response.split(';')[0].split('=')[1]}}


######


# Edit existing xyz
PATCH http://{{host}}/api/xyz/1
content-type: application/json
x-csrftoken: {{csrf_token}}
origin: http://{{host}}

{
    "name": "some name"
}

内容的提问来源于stack exchange,提问作者Mr_Robot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 13:35:15