Age | Commit message (Collapse) | Author | Files | Lines |
|
v0.9.0:
Bug fixes:
* Allow a broader range of characters in header values. This violates
the RFC, but is apparently required for compatibility with
real-world code, like Google Analytics cookies
* Validate incoming and outgoing request paths for invalid
characters. This prevents a variety of potential security issues
that have affected other HTTP clients.
* Force status codes to be integers, thereby allowing stdlib
HTTPStatus IntEnums to be used when constructing responses
Other changes:
* Make all sentinel values inspectable by IDEs, and split
SEND_BODY_DONE into SEND_BODY, and DONE
* Drop support for Python 3.3.
* LocalProtocolError raised in start_next_cycle now shows states for
more informative errors
|
|
v0.8.1:
Bug fixes:
* Always return headers as bytes objects
Other changes:
* Added proper license notices to the Javascript used in our
documentation
|
|
v0.8.0:
Backwards incompatible changes:
h11 now performs stricter validation on outgoing header names and header values: illegal characters are now rejected (example: you can't put a newline into an HTTP header), and header values with leading/trailing whitespace are also rejected (previously h11 would silently discard the whitespace). All these checks were already performed on incoming headers; this just extends that to outgoing headers.
New features:
New method :meth:Connection.send_failed, to notify a :class:Connection object when data returned from :meth:Connection.send was not sent.
Bug fixes:
Make sure that when computing the framing headers for HEAD responses, we produce the same results as we would for the corresponding GET.
Error out if a request has multiple Host: headers.
Send the Host: header first, as recommended by RFC 7230.
The Expect: header is case-insensitive, so use case-insensitive matching when looking for 100-continue.
Other changes:
Better error messages in several cases.
Provide correct error_status_hint in exception raised when encountering an invalid Transfer-Encoding header.
For better compatibility with broken servers, h11 now tolerates responses where the reason phrase is missing (not just empty).
Various optimizations and documentation improvements.
|
|
|
|
This is a little HTTP/1.1 library written from scratch in Python,
heavily inspired by hyper-h2.
It's a "bring-your-own-I/O" library; h11 contains no IO code
whatsoever. This means you can hook h11 up to your favorite network
API, and that could be anything you want: synchronous, threaded,
asynchronous, or your own implementation of RFC 6214 - h11 won't
judge you. (Compare this to the current state of the art, where
every time a new network API comes along then someone gets to start
over reimplementing the entire HTTP protocol from scratch.)
|