访问django/python上的请求标头

sum*_*mit 23 python django header http request

我需要使用sencha和django创建一个安全的restFUL api.我对python很新.到目前为止,我能够使用基本身份验证从sencha向服务器发送请求,如下所示

 new Ext.data.Store({
   proxy: {
     type: "ajax",
      headers: {
       "Authorization": "Basic asdjksdfsksf="
    }
   }
 })  
Run Code Online (Sandbox Code Playgroud)

在php/apache中,我可以使用下面的代码轻松访问这些标题

$headers = apache_request_headers();
print_r($headers);
Run Code Online (Sandbox Code Playgroud)

如何在python中执行此操作?

Jor*_*dan 37

您可以使用request.META字典在视图中访问它们.

如果你想要Authorization标题,你可以这样做 request.META['HTTP_AUTHORIZATION']

如果您从头开始创建一个restful API,您可能需要查看使用tastypie.

  • "授权"如何成为关键?文档说META中的标题是大写的,并且前缀为HTTP_.https://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpRequest.META (4认同)

Jub*_*ali 7

您可以使用

request.META['HTTP_AUTHORIZATION']
Run Code Online (Sandbox Code Playgroud)

而有时

request.META['Authorization']
Run Code Online (Sandbox Code Playgroud)

可以帮助。


mxr*_*350 5

从 django 2.2 开始HttpRequest.headers,添加了对请求头的简单访问。所以现在您还可以使用get()功能获取身份验证标头request.headers

request.headers.get('Authorization')
Run Code Online (Sandbox Code Playgroud)

这将为您提供价值代币价值。

Bearer eyJ0eYourToken...
Run Code Online (Sandbox Code Playgroud)

https://docs.djangoproject.com/en/2.2/ref/request-response/#django.http.HttpRequest.headers

  • 我建议这样做,因为如果使用 Django 测试客户端进行测试,`request.META.get('HTTP_AUTHORIZATION') 可能不会返回任何内容。 (2认同)