다음 Laravel 토큰 API 자습서 (http://rjv.im/post/95988160186/api-token-authentication-with-laravel-and-sentry-part)를 따랐습니다. 내 API와 통신하려면 다음 CRURL 요청을 작성했습니다.Laravel API cURL Python 요청
curl -H "X-Auth-Token:tokenhere" http://localhost:8000/account
요청이 올바르게 작동하고 예상되는 데이터를 정확하게 반환합니다. 내가 파이썬이 번역하면 내가 대신 X-인증 토큰의 기본 인증을 사용하여 사용자 자격 증명을 전달하면 내가 urllib2.HTTPError: HTTP Error 401: Unauthorized
import urllib2
req = urllib2.Request('http://localhost:8000/account')
req.add_header("X-Auth-Token", "tokenhere")
resp = urllib2.urlopen(req)
content = resp.read()
print content
을받을 요청은 예상대로 작동합니다
이import urllib2
def basic_authorization(user, password):
s = user + ":" + password
return "Basic " + s.encode("base64").rstrip()
req = urllib2.Request("http://localhost:8000/account", headers = { "Authorization": basic_authorization("usernameHere", "passwordHere"), })
f = urllib2.urlopen(req)
print f.read()
어떤 도움이 될 것이다 매우 감사.
먼저, 서버 측에서'X-Auth-Token' 헤더를 어떻게 파싱하고 있습니까? 일반적으로 헤더는 콜론 다음에 공백으로 전송되므로 'curl'이 헤더의 나머지 부분을 보내는 방법과 'urllib2'가 추가 한 헤더를 포함하여 _all_ 헤더를 보내는 방법입니다. 서버가 실제로''X-Auth-Token : tokenhere''을 기대하고''X-Auth-Token : tokenhere''을 거부한다면, 서버 측에서 수정해야 할 버그입니다. – abarnert
둘째로, 이것을 디버깅하려면, 당신이 무엇을 보내고 있는지 먼저보아야합니다. 서버에서 전체 요청을 기록 할 수 있도록하여 비교할 수 있습니까? Wireshark에서 보시겠습니까? 또는 서버 대신'nc -kl 8000'과 같은 것을 실행하고,'curl' 명령과 파이썬 프로그램이 그것과 대화하려고 할 때 출력되는 내용을 보십니까? – abarnert
마지막으로, 대부분의 인증 토큰 메커니즘에는 TTL/만기/등이 있습니다. 'curl' 명령은 Python 스크립트가 실패한 직후에도 작동합니까 아니면 과거에 작동 했습니까? – abarnert