From 92d35f885aea42b0d46e4354eb49be467c13ef8c Mon Sep 17 00:00:00 2001 From: xiongziliang <771730766@qq.com> Date: Tue, 25 Sep 2018 09:26:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9cookie=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Http/HttpClient.cpp | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/Http/HttpClient.cpp b/src/Http/HttpClient.cpp index 7cd1d890..480b0bb8 100644 --- a/src/Http/HttpClient.cpp +++ b/src/Http/HttpClient.cpp @@ -247,15 +247,23 @@ void HttpClient::checkCookie(HttpClient::HttpHeader &headers) { HttpCookie::Ptr cookie = std::make_shared(); cookie->setHost(_lastHost); - for(auto &pr : key_val){ - if(pr.first == "path"){ - cookie->setPath(pr.second); - }else if(pr.first == "expires"){ - cookie->setExpires(pr.second); - }else{ - cookie->setKeyVal(pr.first,pr.second); + int index = 0; + auto arg_vec = split(set_cookie, ";"); + for (string &key_val : arg_vec) { + auto key = FindField(key_val.data(),NULL,"="); + auto val = FindField(key_val.data(),"=", NULL); + + if(index++ == 0){ + cookie->setKeyVal(key,val); + } else{ + if(key == "path"){ + cookie->setPath(val); + }else if(key == "expires"){ + cookie->setExpires(val); + } } } + if(!(*cookie)){ //无效的cookie return;