[package] name = "actix-http" version = "3.9.0" authors = [ "Nikolay Kim ", "Rob Ede ", ] description = "HTTP types and services for the Actix ecosystem" keywords = ["actix", "http", "framework", "async", "futures"] homepage = "https://actix.rs" repository = "https://github.com/actix/actix-web" categories = [ "network-programming", "asynchronous", "web-programming::http-server", "web-programming::websocket", ] license.workspace = true edition.workspace = true rust-version.workspace = true [package.metadata.docs.rs] rustdoc-args = ["--cfg", "docsrs"] features = [ "http2", "ws", "openssl", "rustls-0_20", "rustls-0_21", "rustls-0_22", "rustls-0_23", "compress-brotli", "compress-gzip", "compress-zstd", ] [package.metadata.cargo_check_external_types] allowed_external_types = [ "actix_codec::*", "actix_service::*", "actix_tls::*", "actix_utils::*", "bytes::*", "bytestring::*", "encoding_rs::*", "futures_core::*", "h2::*", "http::*", "httparse::*", "language_tags::*", "mime::*", "openssl::*", "rustls::*", "tokio_util::*", "tokio::*", ] [features] default = [] # HTTP/2 protocol support http2 = ["dep:h2"] # WebSocket protocol implementation ws = [ "dep:local-channel", "dep:base64", "dep:rand", "dep:sha1", ] # TLS via OpenSSL openssl = ["__tls", "actix-tls/accept", "actix-tls/openssl"] # TLS via Rustls v0.20 rustls = ["__tls", "rustls-0_20"] # TLS via Rustls v0.20 rustls-0_20 = ["__tls", "actix-tls/accept", "actix-tls/rustls-0_20"] # TLS via Rustls v0.21 rustls-0_21 = ["__tls", "actix-tls/accept", "actix-tls/rustls-0_21"] # TLS via Rustls v0.22 rustls-0_22 = ["__tls", "actix-tls/accept", "actix-tls/rustls-0_22"] # TLS via Rustls v0.23 rustls-0_23 = ["__tls", "actix-tls/accept", "actix-tls/rustls-0_23"] # Compression codecs compress-brotli = ["__compress", "dep:brotli"] compress-gzip = ["__compress", "dep:flate2"] compress-zstd = ["__compress", "dep:zstd"] # Internal (PRIVATE!) features used to aid testing and checking feature status. # Don't rely on these whatsoever. They are semver-exempt and may disappear at anytime. __compress = [] # Internal (PRIVATE!) features used to aid checking feature status. # Don't rely on these whatsoever. They may disappear at anytime. __tls = [] [dependencies] actix-service = "2" actix-codec = "0.5" actix-utils = "3" actix-rt = { version = "2.2", default-features = false } ahash = "0.8" bitflags = "2" bytes = "1.7" bytestring = "1" derive_more = { version = "1", features = ["as_ref", "deref", "deref_mut", "display", "error", "from"] } encoding_rs = "0.8" futures-core = { version = "0.3.17", default-features = false, features = ["alloc"] } http = "0.2.7" httparse = "1.5.1" httpdate = "1.0.1" itoa = "1" language-tags = "0.3" mime = "0.3.4" percent-encoding = "2.1" pin-project-lite = "0.2" smallvec = "1.6.1" tokio = { version = "1.24.2", features = [] } tokio-util = { version = "0.7", features = ["io", "codec"] } tracing = { version = "0.1.30", default-features = false, features = ["log"] } # http2 h2 = { version = "0.3.26", optional = true } # websockets local-channel = { version = "0.1", optional = true } base64 = { version = "0.22", optional = true } rand = { version = "0.8", optional = true } sha1 = { version = "0.10", optional = true } # openssl/rustls actix-tls = { version = "3.4", default-features = false, optional = true } # compress-* brotli = { version = "7", optional = true } flate2 = { version = "1.0.13", optional = true } zstd = { version = "0.13", optional = true } [dev-dependencies] actix-http-test = { version = "3", features = ["openssl"] } actix-server = "2" actix-tls = { version = "3.4", features = ["openssl", "rustls-0_23-webpki-roots"] } actix-web = "4" async-stream = "0.3" criterion = { version = "0.5", features = ["html_reports"] } divan = "0.1.8" env_logger = "0.11" futures-util = { version = "0.3.17", default-features = false, features = ["alloc"] } memchr = "2.4" once_cell = "1.9" rcgen = "0.13" regex = "1.3" rustversion = "1" rustls-pemfile = "2" serde = { version = "1", features = ["derive"] } serde_json = "1.0" static_assertions = "1" tls-openssl = { package = "openssl", version = "0.10.55" } tls-rustls_023 = { package = "rustls", version = "0.23" } tokio = { version = "1.24.2", features = ["net", "rt", "macros"] } [lints] workspace = true [[example]] name = "ws" required-features = ["ws", "rustls-0_23"] [[example]] name = "tls_rustls" required-features = ["http2", "rustls-0_23"] [[bench]] name = "response-body-compression" harness = false required-features = ["compress-brotli", "compress-gzip", "compress-zstd"] [[bench]] name = "date-formatting" harness = false