django - 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 请求接收。
解决方案
对于任何遇到这种 POST 请求神秘地变成 GET 请求的奇怪现象的人......
我在 Heroku 上使用 Django + DRF。这个问题很简单,让我想哭也想笑。
Heroku 将对http://example.com的请求重定向到http://www.example.com,此重定向涉及 GET 请求。因此,POST 请求作为 GET 请求被接收,没有任何最初存在的标头或正文。
所有这些工作和挫折只是因为缺少“www”。希望这对将来的人有所帮助!
推荐阅读
- django-models - 如何在主视图和详细视图的类基础视图中使用 2 个模型
- javascript - 关闭登录弹出窗口时Facebook登录得到cors
- mysql - 如何更新符合条件的列
- python - Python Pandas 按多列分组并追加
- swift - Swift:跟踪用户的分数
- reactjs - 根据在 React 中使用钩子选择的复选框过滤对象数组以呈现项目
- c# - 添加静态列
- r - 使用循环根据列拆分数据集
- phpstorm - PhpStorm 在专注于另一个应用程序之前不会检测到文件更改
- jmeter - 为什么即使在所有配置都正确完成后,在Firefox中通过JMeter录制脚本时页面内容也没有加载?