首页 > 解决方案 > django-rest-framework - POST 请求返回“方法 \"GET\" 不允许。”

问题描述

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

但是,当我导航到实际 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);})

更新:

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

标签: djangodjango-rest-frameworkdjango-rest-auth

解决方案


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

我在 Heroku 上使用 Django + DRF。这个问题很简单,让我想哭也想笑。

Heroku 将对http://example.com的请求重定向到http://www.example.com,此重定向涉及 GET 请求。因此,POST 请求作为 GET 请求被接收,没有任何最初存在的标头或正文。

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

https://stackoverflow.com/a/23688973/8407856


推荐阅读