tornado.httputil — Manipulate HTTP headers and URLs¶
HTTP utility code shared by clients and servers.
This module also defines the HTTPServerRequest
class which is exposedvia tornado.web.RequestHandler.request
.
- class
tornado.httputil.
HTTPHeaders
(*args, **kwargs)[源代码]¶
A dictionary that maintainsHttp-Header-Case
for all keys.
Supports multiple values per key via a pair of new methods,add()
andget_list()
. The regular dictionary interfacereturns a single value per key, with multiple values joined by acomma.- >>> h = HTTPHeaders({"content-type": "text/html"})
>>> list(h.keys())
['Content-Type']
>>> h["Content-Type"]
'text/html'
- >>> h.add("Set-Cookie", "A=B")
>>> h.add("Set-Cookie", "C=D")
>>> h["set-cookie"]
'A=B,C=D'
>>> h.getlist("set-cookie")
['A=B', 'C=D']
- >>> for (k,v) in sorted(h.get_all()):
… print('%s: %s' % (k,v))
…
Content-Type: text/html
Set-Cookie: A=B
Set-Cookie: C=D
getall
()[源代码]¶
Returns an iterable of all (name, value) pairs.
If a header has multiple values, multiple pairs will bereturned with the same name.
- >>> h = HTTPHeaders({"content-type": "text/html"})
- class
tornado.httputil.
HTTPServerRequest
(method=None, uri=None, version='HTTP/1.0', headers=None, body=None, host=None, files=None, connection=None, start_line=None)[源代码]¶
A single HTTP request.
All attributes are typestr
unless otherwise noted.method
¶
HTTP request method, e.g. “GET” or “POST”
uri
¶
The requested uri.
version
¶
HTTP version specified in request, e.g. “HTTP/1.1”
headers
¶HTTPHeaders
dictionary-like object for request headers. Acts likea case-insensitive dictionary with additional methods for repeatedheaders.
body
¶
Request body, if present, as a byte string.
remote_ip
¶
Client’s IP address as a string. IfHTTPServer.xheaders
is set,will pass along the real IP address provided by a load balancerin theX-Real-Ip
orX-Forwarded-For
header.
在 3.1 版更改: The list format of
X-Forwarded-For
is now supported.protocol
¶
The protocol used, either “http” or “https”. IfHTTPServer.xheaders
is set, will pass along the protocol used by a load balancer ifreported via anX-Scheme
header.
host
¶
The requested hostname, usually taken from theHost
header.
arguments
¶
GET/POST arguments are available in the arguments property, whichmaps arguments names to lists of values (to support multiple valuesfor individual names). Names are of typestr
, while argumentsare byte strings. Note that this is different fromRequestHandler.get_argument
, which returns argument values asunicode strings.
query_arguments
¶
Same format asarguments
, but contains only arguments extractedfrom the query string.
3.2 新版功能.
body_arguments
¶
Same format asarguments
, but contains only arguments extractedfrom the request body.
3.2 新版功能.
connection
¶
An HTTP request is attached to a single HTTP connection, which canbe accessed through the “connection” attribute. Since connectionsare typically kept open in HTTP/1.1, multiple requests can be handledsequentially on a single connection.
在 4.0 版更改: Moved from
tornado.httpserver.HTTPRequest
.supportshttp_1_1
()[源代码]¶
Returns True if this request supports HTTP/1.1 semantics.
4.0 版后已移除: Applications are less likely to need this information with theintroduction ofHTTPConnection
. If you still need it, accesstheversion
attribute directly.
A dictionary of Cookie.Morsel objects.
write
(_chunk, callback=None)[源代码]¶
Writes the given chunk to the response stream.
4.0 版后已移除: Userequest.connection
and theHTTPConnection
methodsto write the response.
finish
()[源代码]¶
Finishes this HTTP request on the open connection.
4.0 版后已移除: Userequest.connection
and theHTTPConnection
methodsto write the response.
get_ssl_certificate
(_binary_form=False)[源代码]¶
Returns the client’s SSL certificate, if any.
To use client certificates, the HTTPServer’sssl.SSLContext.verify_mode
field must be set, e.g.:- sslctx = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
ssl_ctx.load_cert_chain("foo.crt", "foo.key")
ssl_ctx.load_verify_locations("cacerts.pem")
ssl_ctx.verify_mode = ssl.CERT_REQUIRED
server = HTTPServer(app, ssl_options=ssl_ctx)
By default, the return value is a dictionary (or None, if noclient certificate is present). Ifbinary_form
is true, aDER-encoded form of the certificate is returned instead. SeeSSLSocket.getpeercert() in the standard library for moredetails.http://docs.python.org/library/ssl.html#sslsocket-objects- sslctx = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
- _exception
tornado.httputil.
HTTPInputError
[源代码]¶
Exception class for malformed HTTP requests or responsesfrom remote sources.
4.0 新版功能.
- class
tornado.httputil.
HTTPServerConnectionDelegate
[源代码]¶
Implement this interface to handle requests fromHTTPServer
.
4.0 新版功能.startrequest
(_server_conn, request_conn)[源代码]¶
This method is called by the server when a new request has started.
|参数:
|——-
|
- server_conn – is an opaque object representing the long-lived(e.g. tcp-level) connection.
- request_conn – is a HTTPConnection object for a singlerequest/response exchange.
This method should return aHTTPMessageDelegate
.
- _class
tornado.httputil.
HTTPMessageDelegate
[源代码]¶
Implement this interface to handle an HTTP request or response.
4.0 新版功能.headersreceived
(_start_line, headers)[源代码]¶
Called when the HTTP headers have been received and parsed.
|参数:
|——-
|
- start_line – a RequestStartLine or ResponseStartLinedepending on whether this is a client or server message.
- headers – a HTTPHeaders instance.
SomeHTTPConnection
methods can only be called duringheadersreceived
.
May return aFuture
; if it does the body will not be readuntil it is done.
- _class
tornado.httputil.
HTTPConnection
[源代码]¶
Applications use this interface to write their responses.
4.0 新版功能.writeheaders
(_start_line, headers, chunk=None, callback=None)[源代码]¶
Write an HTTP header block.
|参数:
|——-
|
- start_line – a RequestStartLine or ResponseStartLine.
- headers – a HTTPHeaders instance.
- chunk – the first (optional) chunk of data. This is an optimizationso that small responses can be written in the same call as theirheaders.
- callback – a callback to be run when the write is complete.
Theversion
field ofstartline
is ignored.
Returns aFuture
if no callback is given.
tornado.httputil.
urlconcat
(_url, args)[源代码]¶
Concatenate url and arguments regardless of whetherurl has existing query parameters.args
may be either a dictionary or a list of key-value pairs(the latter allows for multiple values with the same key.- >>> urlconcat("http://example.com/foo", dict(c="d"))
'http://example.com/foo?c=d'
>>> url_concat("http://example.com/foo?a=b", dict(c="d"))
'http://example.com/foo?a=b&c=d'
>>> url_concat("http://example.com/foo?a=b", [("c", "d"), ("c", "d2")])
'http://example.com/foo?a=b&c=d&c=d2'
- >>> urlconcat("http://example.com/foo", dict(c="d"))
- _class
tornado.httputil.
HTTPFile
[源代码]¶
Represents a file uploaded via a form.
For backwards compatibility, its instance attributes are alsoaccessible as dictionary keys.
- filename
- body
- contenttype
tornado.httputil.
parse_body_arguments
(_content_type, body, arguments, files, headers=None)[源代码]¶
Parses a form request body.
Supportsapplication/x-www-form-urlencoded
andmultipart/form-data
. Thecontenttype
parameter should bea string andbody
should be a byte string. Thearguments
andfiles
parameters are dictionaries that will be updatedwith the parsed contents.
tornado.httputil.
parse_multipart_form_data
(_boundary, data, arguments, files)[源代码]¶
Parses amultipart/form-data
body.
Theboundary
anddata
parameters are both byte strings.The dictionaries given in the arguments and files parameterswill be updated with the contents of the body.
tornado.httputil.
formattimestamp
(_ts)[源代码]¶
Formats a timestamp in the format used by HTTP.
The argument may be a numeric timestamp as returned bytime.time
,a time tuple as returned bytime.gmtime
, or adatetime.datetime
object.- >>> formattimestamp(1359312200)
'Sun, 27 Jan 2013 18:43:20 GMT'
- >>> formattimestamp(1359312200)
- _class
tornado.httputil.
RequestStartLine
¶
RequestStartLine(method, path, version)method
¶
Alias for field number 0
path
¶
Alias for field number 1
version
¶
Alias for field number 2
tornado.httputil.
parserequest_start_line
(_line)[源代码]¶
Returns a (method, path, version) tuple for an HTTP 1.x request line.
The response is acollections.namedtuple
.- >>> parserequest_start_line("GET /foo HTTP/1.1")
RequestStartLine(method='GET', path='/foo', version='HTTP/1.1')
- >>> parserequest_start_line("GET /foo HTTP/1.1")
- _class
tornado.httputil.
ResponseStartLine
¶
ResponseStartLine(version, code, reason)code
¶
Alias for field number 1
reason
¶
Alias for field number 2
version
¶
Alias for field number 0
tornado.httputil.
parseresponse_start_line
(_line)[源代码]¶
Returns a (version, code, reason) tuple for an HTTP 1.x response line.
The response is acollections.namedtuple
.- >>> parseresponse_start_line("HTTP/1.1 200 OK")
ResponseStartLine(version='HTTP/1.1', code=200, reason='OK')
- >>> parseresponse_start_line("HTTP/1.1 200 OK")
tornado.httputil.
split_host_and_port
(_netloc)[源代码]¶
Returns(host, port)
tuple fromnetloc
.
Returnedport
will beNone
if not present.
4.1 新版功能.
Parse aCookie
HTTP header into a dict of name/value pairs.
This function attempts to mimic browser cookie parsing behavior;it specifically does not follow any of the cookie-related RFCs(because browsers don’t either).
The algorithm used is identical to that used by Django version 1.9.10.
4.4.2 新版功能.
原文:
https://tornado-zh-cn.readthedocs.io/zh_CN/latest/httputil.html