12、postman取响应头中多个set-cookie问题

本文详细介绍了在Postman中如何获取全部的Set-Cookie值,提供了四种不同的方法,包括使用responseH对象进行遍历和解析,确保即使存在多个Set-Cookie也能完整提取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以往在取响应头中的值时都是用到getResponseHeader方法,比如取set-cookie的值,可以通过postman.getResponseHeader("set-cookie")来取值,其中set-cookie不区分大小写,但是如果存在多个set-cookie时,就无法都取到了。

通过postman官方文档,查到pm.respoonse.headers可以实现,具体如下:

var responseH = pm.response.headers;//返回object类型所有响应header
var jsonData = JSON.stringify(responseH);//转换成json格式
var result = JSON.parse(jsonData);//转换成数组对象

//遍历

方法一

for(var i=0;i<result.length;i++){

    if(result[i].key===("Set-Cookie")){
        console.log(result[i].value);
    }
    else{
        continue;
    } 
}

方法二

for(var x of Object.keys(responseH.reference)){

        if(x=='set-cookie'){

                   for(var i = 0 ;i < Object.values(responseH.reference[x]).length;i++ ){                                                                           

                            console.log(Object.values(responseH.reference[x])[i].value);

        }

    }

}

方法三

for(var i in responseH.reference){

           if(responseH.reference[i] instanceof Array){

                     for(var j=0 ;j<responseH.reference[i].length;j++ ){

                               console.log(responseH.reference[i][j].value);

          }

     }

}

方法四

for(var i in responseH.members){

          if(responseH.members[i].key=='Set-Cookie'){

                  console.log(responseH.members[i].value)

          }

}

通过控制台,发现两个set-cookie均正确提取。

官方文档https://learning.getpostman.com/docs/postman/scripts/postman-sandbox-api-reference/

### 如何在Postman中自动获并使用Cookie #### 自动管理Cookies 当发送HTTP请求时,如果响应头包含`Set-Cookie`字段,则表明服务器希望客户端保存这些cookies以便于未来的请求能够携带它们。对于Postman而言,默认情况下会开启自动处理功能,这意味着无需额外编写脚本就能实现对大部分场景下cookie的有效利用[^1]。 然而,在某些复杂的应用环境中可能需要手动干预来精确控制哪些cookie应该被提取以及怎样应用到下一个请求上。此时可以通过编写Pre-request Script或Tests部分的JavaScript代码片段完成特定需求下的操作。 #### 手动获与设置Cookie 针对存在多个同名但路径不同的cookie情况,可以采用如下方式确保准确性: 通过`getResponseHeader()`方法读整个`Set-Cookie`字符串,并对其进行分割解析从而得到想要的那一项[^2]: ```javascript var jsondata = postman.getResponseHeader("Set-Cookie"); console.log(jsondata); let data = jsondata.split(","); console.log(data[0]); postman.setEnvironmentVariable("Cookie", data[0].trim()); ``` 另外一种更为推荐的做法是直接依据具体的cookie名称来进行检索,这不仅提高了可读性和维护性同时也减少了出错几率: ```javascript var token = postman.getResponseCookie("XSRF-TOKEN")["value"]; console.log(token); postman.setEnvironmentVariable("X-XSRF-TOKEN", token); ``` 上述两种方法都可以有效地将所获得的cookie值存入环境变量之中,之后就可以很方便地将其加入到任何后续发出的请求头部里去了[^4]。 为了简化流程提高效率,在实际工作中通常会在成功登录后的首次响应内执行以上逻辑,进而使得接下来所有的API调用都不再受限于此环节的影响[^3]。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值