我正在玩一些API,我正试图解决这个问题。
我正在通过API向我的服务器发出基本的HTTP身份验证请求。作为此请求的一部分,经过身份验证的密钥将作为用户名存储在HTTP标头中。
所以我的问题是,如何获取传入请求的内容,以便我可以对其进行检查?
我想做什么:
if incoming request has header == 'myheader':
do some stuff
else:
return ('not authorised')
对于那些感兴趣的人,我想让this工作。
更新 我正在使用Django
答案 0 :(得分:6)
http://docs.djangoproject.com/en/dev/ref/request-response/
<强> HttpRequest.META 强>
A standard Python dictionary containing all available HTTP headers.
Available headers depend on the client and server, but here are some examples:
CONTENT_LENGTH
CONTENT_TYPE
HTTP_ACCEPT_ENCODING
HTTP_ACCEPT_LANGUAGE
HTTP_HOST -- The HTTP Host header sent by the client.
HTTP_REFERER -- The referring page, if any.
HTTP_USER_AGENT -- The client's user-agent string.
QUERY_STRING -- The query string, as a single (unparsed) string.
REMOTE_ADDR -- The IP address of the client.
REMOTE_HOST -- The hostname of the client.
REMOTE_USER -- The user authenticated by the Web server, if any.
REQUEST_METHOD -- A string such as "GET" or "POST".
SERVER_NAME -- The hostname of the server.
SERVER_PORT -- The port of the server.
除CONTENT_LENGTH和CONTENT_TYPE外,为 如上所述,中的任何HTTP头 请求转换为META密钥 将所有字符转换为 大写,替换任何连字符 下划线并添加HTTP_前缀 这个名字。所以,例如,标题 被称为X-Bender的人将被映射到 META密钥HTTP_X_BENDER。
所以:
if request.META['HTTP_USERNAME']:
blah
else:
blah
答案 1 :(得分:2)
标题存储在os.environ
中。因此,您可以像这样访问HTTP标头:
import os
if os.environ.haskey("SOME_HEADER"):
# do something with the header, i.e. os.environ["SOME_HEADER"]