Laravel Sanctum:如何在Insomnia中自动获取XSRF令牌解决CSRF不匹配
在Insomnia中自动提取Laravel Sanctum的XSRF Token并存储为本地变量
Laravel Sanctum的XSRF Token通过响应头的Set-Cookie字段返回,我们可以通过Insomnia的请求钩子自动提取并存储,避免手动复制粘贴的麻烦。具体步骤如下:
- 打开Insomnia,定位到你的
/sanctum/csrf-cookie请求或登录请求(两者都会返回XSRF Token的Cookie),点击请求右上角的「Hooks」图标。 - 切换到「After Response」标签页,添加以下处理脚本:
// 从响应头的Set-Cookie中提取XSRF-TOKEN const setCookieHeader = response.headers.get('Set-Cookie'); if (setCookieHeader) { // 匹配XSRF-TOKEN的取值 const xsrfMatch = setCookieHeader.match(/XSRF-TOKEN=([^;]+)/); if (xsrfMatch && xsrfMatch[1]) { // 解码URL编码的Token const decodedXsrfToken = decodeURIComponent(xsrfMatch[1]); // 存储为Insomnia本地变量 await insomnia.store.setLocalVariable('xsrf_token', decodedXsrfToken); } }
- 保存钩子配置后,发送该请求,Insomnia会自动提取并存储XSRF Token到本地变量
xsrf_token中。 - 在需要验证CSRF Token的API请求中,添加
X-XSRF-TOKEN请求头,将其值设置为{{xsrf_token}},Insomnia会自动替换为存储的Token值。
补充说明
- 若需按环境区分变量,可将脚本中的
insomnia.store.setLocalVariable替换为insomnia.store.setEnvironmentVariable('xsrf_token', decodedXsrfToken),将Token存储到当前环境变量中。 - 确保Insomnia的请求设置中开启了「Send Cookies」,默认会自动管理Cookie,保证Token的上下文有效性。
内容的提问来源于stack exchange,提问作者Dênio Clécio
相关产品推荐
相关产品推荐

