CookieJar doesn't support the path-match and domain-match algorithms from [RFC 6265](https://tools.ietf.org/html/rfc6265#section-5.1.3), while cookie_store does. This fixes some issues with the cookie matching algorithm currently in ureq. For instance, the domain-match uses substring matching rather than the RFC 6265 algorithm. This deletes two tests: match_cookies_returns_nothing_when_no_cookies didn't test much agent_cookies was failing because cookie_store rejects cookies on the `test:` scheme. The way around this is to set up a testserver - but it turns out cookies_on_redirect already does that, and covers the same cases and more. This changes some cookie-related behavior: - Cookies could previously be sent to a wrong domain - e.g. a cookie set on `example.com` could go to `example.com.evil.com` or `evilexample.com`. Probably no one was relying on this, since it's quite broken. - A cookie with a path of `/foo` could be sent on a request to `/foobar`, but now it can't. - Cookies could previously be set on IP addresses, but now they can't. - Cookies could previously be set for domains other than the one on the request (or its parents), but now they can't. - When a cookie had no domain attribute, it would previously get the domain from the request, and subsequently be sent to that domain and all subdomains. Now, it will only be sent to that exact domain (host-only). That last one is probably the most likely to break people, since someone could depend on it without realizing it was broken behavior.
54 lines
1.6 KiB
TOML
54 lines
1.6 KiB
TOML
[package]
|
|
name = "ureq"
|
|
version = "1.5.0"
|
|
authors = ["Martin Algesten <martin@algesten.se>"]
|
|
description = "Minimal HTTP request library"
|
|
license = "MIT/Apache-2.0"
|
|
repository = "https://github.com/algesten/ureq"
|
|
readme = "README.md"
|
|
keywords = ["web", "request", "http", "rest", "client"]
|
|
categories = ["web-programming::http-client"]
|
|
edition = "2018"
|
|
|
|
[package.metadata.docs.rs]
|
|
# Keep in sync with .github/workflows/test.yml
|
|
features = [ "tls", "json", "charset", "cookies", "socks-proxy" ]
|
|
|
|
[features]
|
|
default = ["tls", "cookies"]
|
|
json = ["serde", "serde_json"]
|
|
charset = ["encoding"]
|
|
tls = ["rustls", "webpki", "webpki-roots"]
|
|
native-certs = ["rustls-native-certs"]
|
|
cookies = ["cookie", "cookie_store"]
|
|
socks-proxy = ["socks"]
|
|
|
|
[dependencies]
|
|
base64 = "0.13"
|
|
chunked_transfer = "1.2.0"
|
|
cookie = { version = "0.14", features = ["percent-encode"], optional = true}
|
|
once_cell = "1"
|
|
qstring = "0.7"
|
|
url = "2"
|
|
socks = { version = "0.3.2", optional = true }
|
|
rustls = { version = "0.18", optional = true, features = [] }
|
|
webpki = { version = "0.21", optional = true }
|
|
webpki-roots = { version = "0.20", optional = true }
|
|
rustls-native-certs = { version = "0.4", optional = true }
|
|
serde = { version = "1", optional = true }
|
|
serde_json = { version = "1", optional = true }
|
|
encoding = { version = "0.2", optional = true }
|
|
native-tls = { version = "0.2", optional = true }
|
|
cookie_store = { version = "0.12.0", optional = true }
|
|
log = "0.4.11"
|
|
|
|
[dev-dependencies]
|
|
serde = { version = "1", features = ["derive"] }
|
|
rayon = "1.3.0"
|
|
rayon-core = "1.7.0"
|
|
chrono = "0.4.11"
|
|
env_logger = "0.7.1"
|
|
|
|
[[example]]
|
|
name = "smoke-test"
|