django-rest-framework-POST请求返回“不允许使用方法\“ GET \”。

Pri*_*nty 2 django django-rest-framework django-rest-auth

我已经按照安装教程设置了django-rest-auth,但是我无法使用登录API端点。当我发送带有正确信息的POST请求时,响应“不允许使用方法“ GET””,我收到405状态错误。

但是,当我导航到实际URL并从在线表单发布它时,它可以正常工作并返回令牌。

救命?!

邮递员示例:

https://i.imgur.com/574rERm.png

Axios示例:

axios.post('http://----.com/api/accounts/login/', data: {'username': ---, 'password': ---})
.then(function (response) {console.log(response);})
.catch(function (response) {console.log(response);})
Run Code Online (Sandbox Code Playgroud)

更新:

这似乎是Heroku或Gunicorn的问题?该网站使用Gunicorn部署在Heroku上,但是所有POST请求都作为GET请求接收。

Pri*_*nty 8

对于遇到这种奇怪的POST请求现象而神秘地变成GET请求的人来说...

我在Heroku上使用Django + DRF。问题是如此简单,以至于我想同时大笑和哭泣。

Heroku将请求从http://example.com重定向到http://www.example.com,并且此重定向涉及GET请求。结果,POST请求被作为GET请求接收,而没有最初出现的任何标头或正文。

所有这些工作和挫折感仅是因为缺少“ www”。希望这对将来有帮助!

/sf/answers/1658228141/

  • 我缺少尾部斜杠 (4认同)
  • 如果您在邮递员上遇到此问题 - 不要忘记在 URL 末尾添加 / :| (2认同)