Stop percent encoding cookies
This commit is contained in:
@@ -26,7 +26,7 @@ socks-proxy = ["socks"]
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
base64 = "0.13"
|
base64 = "0.13"
|
||||||
chunked_transfer = "1.2.0"
|
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"
|
once_cell = "1"
|
||||||
url = "2"
|
url = "2"
|
||||||
socks = { version = "0.3.2", optional = true }
|
socks = { version = "0.3.2", optional = true }
|
||||||
|
|||||||
20
src/unit.rs
20
src/unit.rs
@@ -301,7 +301,7 @@ fn extract_cookies(agent: &Agent, url: &Url) -> Option<Header> {
|
|||||||
.cookie_tin
|
.cookie_tin
|
||||||
.get_request_cookies(url)
|
.get_request_cookies(url)
|
||||||
.iter()
|
.iter()
|
||||||
.map(|c| c.encoded().to_string())
|
.map(|c| c.to_string())
|
||||||
.collect::<Vec<_>>()
|
.collect::<Vec<_>>()
|
||||||
.join(";");
|
.join(";");
|
||||||
match header_value.as_str() {
|
match header_value.as_str() {
|
||||||
@@ -431,6 +431,9 @@ fn save_cookies(unit: &Unit, resp: &Response) {
|
|||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
#[cfg(feature = "cookies")]
|
#[cfg(feature = "cookies")]
|
||||||
mod tests {
|
mod tests {
|
||||||
|
use cookie::Cookie;
|
||||||
|
use cookie_store::CookieStore;
|
||||||
|
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
use crate::Agent;
|
use crate::Agent;
|
||||||
@@ -458,4 +461,19 @@ mod tests {
|
|||||||
|| result == Some(Header::new("Cookie", order2))
|
|| 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<>//"))
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user