Files
ureq/Cargo.toml
Jacob Hoffman-Andrews 2d4b42e298 Use cookie_store crate instead of cookie::CookieJar (#169)
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.
2020-10-04 10:21:09 -07:00

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"