request.META不包含标题

int*_*_32 2 django django-rest-framework

我正在使用djangorestframework与以下代码:

class RegistrationView(APIView):
   def post(self, request, format=None):
      print self.request.META.get('API_KEY')
Run Code Online (Sandbox Code Playgroud)

然后它返回None(其他标题,如Content-TypeUser-Agent可以).

但是这个标题肯定存在于请求中(这个键只有local-db,所以可以将它粘贴到这里):

嗅探器

为什么?

All*_*ітy 15

问题在于请求标头中的下划线.

将标题设置为API-KEY(使用连字符,而不是下划线),您可以使用它来捕获它

request.META.get('HTTP_API_KEY')
Run Code Online (Sandbox Code Playgroud)

这种行为的原因是某些服务器只是忽略下划线.

请参阅此相关问题为什么HTTP标头名称中禁止使用下划线