如何使用Postman获取所有Set-Cookie标头

2ekbmq32  于 2023-10-18  发布在  Postman
关注(0)|答案(4)|浏览(166)

我的应用返回两个Set-Cookie头:JSESSIONID和AWSELB。
当我在Postman中编写测试并使用postman.getResponseHeader("Set-Cookie")时,它只返回AWSELB。
你知道我如何得到JSESSIONID吗?
编辑:接受的答案解决了一种方式,现在我有同样的问题,但发送两个标题相同的关键。我应该能够发送多个'Set-Cookie'头,但当我这样做时,它看起来像只有最后一个正在发送,第一个被覆盖。

qxgroojn

qxgroojn1#

getResponseHeader似乎只包含最后一个头,所以在处理cookie时它并不真正有用。
我建议你试试
getResponseCookie
举例来说:

tests["Should contain JSESSIONID cookie"] = postman.getResponseCookie('JSESSIONID').value === 'abcdef';

希望这对你有帮助!

nimxete2

nimxete22#

实际上postman包含了postman.response.headers下的所有头文件,其类型为HeaderList。但它存储类型为Array的头。Header有key和value。
因此,您可以遍历postman.response. header并使用value或key筛选出您需要的内容
//通过头键过滤

pm.response.headers
.filter(header=>header.key.includes("whatever you are looking for"))
.map(f=>console.log( f.value))

//通过头值过滤

pm.response.headers
.filter(header=>header.value.includes("whatever you are looking for"))
.map(f=>console.log( f.value))
fkaflof6

fkaflof63#

我使用下面的方法从响应头中获取cookie,

const Cookie = require('postman-collection').Cookie;

const oResponseHeaders = pm.response.headers;
oResponseHeaders.filter(function(resHeader){
    //console.log("resHeader : ",resHeader);
    
    let bSetCookieExists = resHeader.key.includes("Set-Cookie");
    if(bSetCookieExists){
        console.log('cookie : ',resHeader.key.includes("Set-Cookie"));
        
        let  rawHeader = pm.response.headers.get("Set-Cookie");
        let myCookie = new Cookie(rawHeader);
        console.log("myCookie : ",myCookie.toJSON());
        console.log("myCookie name : ", myCookie.name);
        console.log("myCookie value : ", myCookie.value);
      
    }
    
   
})
zte4gxcn

zte4gxcn4#

API似乎又变了。现在就像是

pm.response.headers.get('Set-Cookie').
  split('; ').find(s=>s.startsWith('myCookieName='))?.split('=')[1]

获取cookie的值myCookieName

相关问题