2014-11-16 6 views
1

처리 할 뷰를 통해 json 데이터를 게시하려고 시도하고 있습니다. json에는 x-pinpoint-token이라는 사용자 정의 헤더가 있습니다. 그러나, 내가 try.META.get 그것을 통해이 데이터를 얻을 때 내가 필요한 데이터를 얻을 수 없습니다.django에서 사용자 정의 http 헤더에 문제가 발생했습니다.

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) 
     ... 

보기 토큰을 통과해도 상관 없습니다.

내가 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) 

하지만 그것은 단지 401

+1

참고 request.META 정상적인 파이썬 사전 있어야된다 (이 디버깅하는 쉬운 방법은 인쇄하거나 request.META.keys()를 기록합니다.하는 것) 내용을 쉽게 확인할 수 있습니다. – RemcoGerlich

답변

5

반환합니다 documentation for HttpRequest.META는 말한다 : 요청에

HTTP 헤더 변환하여 META 키로 변환 모든 문자를 대문자로 바꾸고 하이픈을 밑줄로 바꾸고 이름 앞에 HTTP_ 접두사를 추가합니다.

그래서 request.META.get('HTTP_X_PINPOINT_TOKEN')을 시도해보십시오.

당신이 그것을 기록하거나 인쇄하거나 PDB를 입력하거나 그렇게 할 수 있도록

관련 문제