Stop percent encoding cookies

This commit is contained in:
Martin Algesten
2021-03-24 17:48:27 +01:00
parent 9ec4e7192a
commit c5c40cf138
2 changed files with 20 additions and 2 deletions

View File

@@ -26,7 +26,7 @@ socks-proxy = ["socks"]
[dependencies]
base64 = "0.13"
chunked_transfer = "1.2.0"
cookie = { version = "0.15", features = ["percent-encode"], optional = true}
cookie = { version = "0.15", deafult-features = false, optional = true}
once_cell = "1"
url = "2"
socks = { version = "0.3.2", optional = true }

View File

@@ -301,7 +301,7 @@ fn extract_cookies(agent: &Agent, url: &Url) -> Option<Header> {
.cookie_tin
.get_request_cookies(url)
.iter()
.map(|c| c.encoded().to_string())
.map(|c| c.to_string())
.collect::<Vec<_>>()
.join(";");
match header_value.as_str() {
@@ -431,6 +431,9 @@ fn save_cookies(unit: &Unit, resp: &Response) {
#[cfg(test)]
#[cfg(feature = "cookies")]
mod tests {
use cookie::Cookie;
use cookie_store::CookieStore;
use super::*;
use crate::Agent;
@@ -458,4 +461,19 @@ mod tests {
|| result == Some(Header::new("Cookie", order2))
);
}
#[test]
fn cookies_not_percent_encoded() {
let empty = b"";
let mut store = CookieStore::load_json(&empty[..]).unwrap();
let url = Url::parse("https://mydomain.com").unwrap();
let cookie = Cookie::new("borked///", "illegal<>//");
store.insert_raw(&cookie, &url).unwrap();
let agent = crate::builder().cookie_store(store).build();
let cookies = extract_cookies(&agent, &url);
assert_eq!(
cookies,
Some(Header::new("Cookie", "borked///=illegal<>//"))
);
}
}