2

如何从响应中选择特定的 cookie?

我得到的响应有 6 个 Set-Cookie 行,但我的下一篇文章只需要其中一些。

HTTP/1.1 200 OK
date: Thu, 05 Mar 2015 13:49:29 GMT
cache-control: no-cache="set-cookie, set-cookie2"
expires: Thu, 01 Dec 1994 16:00:00 GMT
Set-Cookie: JSESSIONID-AUTH=0000Q77IB2vtdMjRmqnsja8ciUE:18j7lq1fl;Secure; Path=/
Set-Cookie: PD_STATEFUL_e0255922-d1d6-11e3-9144-005056bc2960=%2Fnauth2;Secure; Path=/
Set-Cookie: PD-SESSION-ID=1_4_0_Mip9xQRE1J80beniD1eh-7Le1L+X8uwfIRVUZdKvJUKO2OIB;Secure; Path=/; HttpOnly
Set-Cookie: iampsc1110=rd520o00000000000000000000ffff0a101fa3o1110;secure; path=/
Set-Cookie: TSaee27a=e4d514b3ab1503842b07e9b4d4ee0db30a6a3a54c730b09754f85edbe54ca44a641b9f7bf3fdf509ca7d6de2ed2d4e69c8c3db3f6623dd16fb85456b4ced6f5a34c171e7a460affd34c171e70025563134c171e75f534b1f34c171e7; Path=/
4

1 回答 1

0

你是对的,还没有合适的方法来做到这一点。这里有2个解决方法:

手动,你可以去删除你不想要的cookies。在Requests菜单中,选择Cookies然后Show Cookies。使用搜索框查找您想要删除的 cookie。

一个更复杂的解决方案,但我认为这完全符合您的需求。使用自定义动态值(右键单击该字段,然后选择Extensions > Custom),并使用以下 JavaScript 代码片段:

function evaluate(context){
  // Set here the cookies you'd like to return
  var wantedCookies = ["datr", "reg_fb_ref"];

  var regex = /^(\w+)\=([^;\s]+)/g;

  // Request
  // Uses here the current request, you can use getRequestByName("name of the request") instead
  var request = context.getCurrentRequest();

  // Get response cookies
  var cookies = request.getLastExchange().getResponseHeaderByName("Set-Cookie").split(", ");
  var filteredCookies = [];

  for (var i in cookies) {
    var cookie = cookies[i];
    var match = regex.exec(cookie);
    if (match && wantedCookies.indexOf(match[1]) >= 0) {
      filteredCookies.push(match[0]);
    }
  }

  return filteredCookies.join(",");
};

这基本上是手动解析响应 cookie,并返回您需要的那些。

在 Paw 中过滤 cookie

于 2015-03-08T22:39:16.810 回答