令牌认证Django Rest框架HTTPi

2024-10-01 17:33:21 发布

您现在位置:Python中文网/ 问答频道 /正文

您好,我正在尝试按照下面的教程使用httpie测试我用DRF实现的令牌身份验证link

以下命令:

http GET 127.0.0.1:8000/api/projects/ 'Authorization: Token b453919a139448c5891eadeb14bf1080a2624b03'

产生以下错误。在

^{pr2}$

所以我决定与教程不同,并提出了这样的要求

http GET 127.0.0.1:8000/api/projects/ 'Authorization:b453919a139448c5891eadeb14bf1080a2624b03'

返回以下消息

HTTP/1.0 401 Unauthorized
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json
Date: Thu, 03 Nov 2016 09:52:05 GMT
Server: WSGIServer/0.1 Python/2.7.10
Vary: Accept
WWW-Authenticate: Token
X-Frame-Options: SAMEORIGIN

  {
     "detail": "Authentication credentials were not provided."
  }

任何帮助都会很好。我在家里用本地机器运行。在


Tags: 命令token身份验证apihttpget错误link
2条回答

与paulnyondo的经验相反,对我来说,问题不是单引号/双引号(当使用bash作为shell时两者都很好),而是Authorization:和{}之间的空格。在

这失败了:

» http GET http://service:8000/api/v1/envs/ 'Authorization: Token 3ea4d8306c6702dcefabb4ea49cfb052f15af85c'

http: error: InvalidHeader: Invalid return character or leading space in header: Authorization

这是有效的(双引号):

^{pr2}$

这也适用(单引号):

» http GET http://svc.userv.dgvmetro:8000/api/v1/envs/ 'Authorization:Token 3ea4d8306c6702dcefabb4ea49cfb052f15af85c'
HTTP/1.1 200 OK
Allow: GET, HEAD, OPTIONS
Content-Length: 90
Content-Type: application/json

解决方案很简单,如下所示。使用双引号代替单引号,与DRF Documentation 相反

对于curl,使用下面的命令

curl -H "Authorization: Token b453919a139448c5891eadeb14bf1080a2624b03" http://127.0.0.1:8000/api/projects/

用于HTTPie

^{pr2}$

请注意,在文档中使用双引号与单引号相反。在

相关问题 更多 >

    热门问题