Postman预请求脚本问题:从响应提取值并设置全局变量失败
解决Postman预请求脚本中无法提取响应头API_TOKEN的问题
你的核心问题是响应头属性名用错了:Postman通过pm.sendRequest返回的响应对象里,存储响应头的属性是复数形式的headers,而非单数header,这就是为什么console.log(response.header)输出undefined,但打印整个response能看到对应数组的原因。
另外,直接通过数组索引response.headers[3]取值风险很高——响应头的顺序可能随服务器配置变化,推荐用headers.get()方法直接按名称获取目标头,更稳定。
修正后的完整代码如下:
pm.sendRequest({ url: pm.globals.get("GET_API_TOKEN_URL"), method: "GET", header: { clientId: pm.globals.get("GET_API_TOKEN_CLIENT_ID"), clientSecret: pm.globals.get("GET_API_TOKEN_CLIENT_SECRET") } }, function (error, response) { if (error) { console.error('请求出错:', error); return; } // 正确获取响应头集合 console.log(response.headers); // 按名称直接获取apitoken,避免依赖索引顺序 const apiToken = response.headers.get('apitoken'); if (apiToken) { pm.globals.set("API_TOKEN", apiToken); console.log('API_TOKEN已成功设置:', apiToken); } else { console.error('未在响应头中找到apitoken字段'); } })
补充说明:
- 增加了请求错误处理,避免请求失败时后续代码抛出异常
headers.get()方法会自动忽略头名称的大小写,适配不同服务器的返回格式
内容的提问来源于stack exchange,提问作者friend.code
相关产品推荐
相关产品推荐

