From c7da30149a2e871318e8a78710886418b6301338 Mon Sep 17 00:00:00 2001 From: prfss Date: Thu, 16 May 2019 05:12:22 +0900 Subject: [PATCH] Fix cookie header to not include set-cookie attributes (#522) --- src/async_impl/client.rs | 7 ++++++- tests/cookie.rs | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/async_impl/client.rs b/src/async_impl/client.rs index b8c3733..b27dd84 100644 --- a/src/async_impl/client.rs +++ b/src/async_impl/client.rs @@ -27,6 +27,7 @@ use mime; #[cfg(feature = "default-tls")] use native_tls::TlsConnector; use tokio::{clock, timer::Delay}; +use url::percent_encoding::{percent_encode, USERINFO_ENCODE_SET}; use super::request::{Request, RequestBuilder}; @@ -877,7 +878,11 @@ fn add_cookie_header(headers: &mut HeaderMap, cookie_store: &cookie::CookieStore let header = cookie_store .0 .get_request_cookies(url) - .map(|c| c.encoded().to_string()) + .map(|c| { + let name = percent_encode(c.name().as_bytes(), USERINFO_ENCODE_SET); + let value = percent_encode(c.value().as_bytes(), USERINFO_ENCODE_SET); + format!("{}={}", name, value) + }) .collect::>() .join("; "); if !header.is_empty() { diff --git a/tests/cookie.rs b/tests/cookie.rs index b98306b..c7e7dc1 100644 --- a/tests/cookie.rs +++ b/tests/cookie.rs @@ -94,7 +94,7 @@ fn cookie_store_simple() { ", response: b"\ HTTP/1.1 200 OK\r\n\ - Set-Cookie: key=val\r\n\ + Set-Cookie: key=val; HttpOnly\r\n\ Content-Length: 0\r\n\ \r\n\ "