在django中遇到自定义http标头的问题

Nei*_*man 1 python django json

我正在尝试通过视图发布json数据进行处理并放入视图中.json包含一个名为x-pinpoint-token的自定义标头.但是,当我尝试通过request.META.get获取此数据时,它无法获取我需要的数据.

class Data(View):

    @method_decorator(csrf_exempt)
    def dispatch(self, *args, **kwargs):
        return super(IDFAData, self).dispatch(*args, **kwargs)

    def post(self, request, *args, **kwargs):
        token = request.META.get('X_PINPOINT_TOKEN')
        if token is None:
            return HttpResponse(
                "Failed Authorization - 401",
                status='401'
            )
        else:
            token = token.split(':')
            token_clean = token[1]
        data_in = json.loads(request.body)
        ...
Run Code Online (Sandbox Code Playgroud)

无论我通过哪个视图,令牌似乎都是空的.

我跑的测试python-requests:

import requests
token = '8756990800504b3f86a103bba1a03aab'
token = 'Token:'+token
data_in = {...}
import json
headers = {}
headers['content-type'] = 'application/json'
headers['X_PINPOINT_TOKEN'] = token
payload = json.dumps(data_in)
r = requests.post('http://0.0.0.0:5000/api/', headers=headers, data=payload)
Run Code Online (Sandbox Code Playgroud)

但它只返回401.

Kev*_*nry 5

对文件HttpRequest.META说:

通过将所有字符转换为大写,将所有字符替换为下划线并在名称中添加HTTP_前缀,将请求中的HTTP标头转换为META密钥.

所以试试吧request.META.get('HTTP_X_PINPOINT_TOKEN').

(一种简单的调试方法是打印或记录request.META.keys().)