Python 如何检查传入HTTP头请求的内容
我正在玩弄一些API,我正试图弄明白这一点 我正在通过API向我的服务器发出一个基本的HTTP身份验证请求。作为该请求的一部分,经过身份验证的密钥作为用户名存储在HTTP头中 所以我的问题是,如何获取传入请求的内容,以便对其执行检查 我想做的是:Python 如何检查传入HTTP头请求的内容,python,django,http-headers,basic-authentication,Python,Django,Http Headers,Basic Authentication,我正在玩弄一些API,我正试图弄明白这一点 我正在通过API向我的服务器发出一个基本的HTTP身份验证请求。作为该请求的一部分,经过身份验证的密钥作为用户名存储在HTTP头中 所以我的问题是,如何获取传入请求的内容,以便对其执行检查 我想做的是: if incoming request has header == 'myheader': do some stuff else: return ('not authorised') 对于那些感兴趣的人,我正在努力工作 更新 我正在使
if incoming request has header == 'myheader':
do some stuff
else:
return ('not authorised')
对于那些感兴趣的人,我正在努力工作
更新
我正在使用Django头文件存储在
os.environ
中。因此,您可以像这样访问HTTP头:
import os
if os.environ.haskey("SOME_HEADER"):
# do something with the header, i.e. os.environ["SOME_HEADER"]
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.
内容长度和内容类型除外,如下所示
如上所述,在
请求被转换为元密钥
将所有字符转换为
大写,将所有连字符替换为
下划线并添加一个HTTP_uu前缀
名副其实。例如,一个标题
调用的X-Bender将映射到
元密钥HTTP_X_BENDER
因此:
您正在使用哪个web框架?它们都应该有一个API来轻松访问HTTP头键值对。它是特定于web框架的吗?请尝试,特别是
HttpRequest.META
。这是一个字典,您可以从中访问客户端发送的HTTP头?这两种方法都有优缺点吗?这实际上取决于应用程序,即您尝试执行的操作。在服务器端这样做的好处是安全性;您通常可以对用户隐藏细节,因为JavaScript对最终用户非常透明。
if request.META['HTTP_USERNAME']:
blah
else:
blah