post - Python 请求 GET 返回 200 但 POST 返回 404
问题描述
我正在尝试使用 python 的请求库登录到一个站点(www.scribd.com)。登录页面是https://www.scribd.com/login。当我执行以下操作时,一切正常,我得到状态代码 200,所以我知道该页面存在:
import requests
BASE_URL = "https://www.scribd.com/"
LOGIN_URL = BASE_URL + "login"
r=requests.get(LOGIN_URL)
print(r.status_code)
print(r.reason)
但是,如果我发出 POST 请求(无论我是否包含我的登录详细信息,是否包含标题等),我总是会收到 404 响应。我已经在其他网站上尝试过同样的模式,对于其他网站的 POST 和 GET,我将获得 200 OK 状态代码。IE,:
BASE_URL_IG='https://www.instagram.com/'
LOGIN_URL_IG=BASE_URL_IG+'accounts/login'
r = requests.get(LOGIN_URL_IG)
print(r.reason)
print(r.status_code)
r = requests.post(LOGIN_URL_IG)
print(r.reason)
print(r.status_code)
我不确定还能尝试什么,但我似乎无法在任何其他网站上复制这个问题。我也在 Postman 中尝试过,但遇到了同样的问题。
解决方案
后端可以为 GET 开辟路线,但不能为 POST 开辟路线。所以这不足为奇。例如,您可以允许用户获取购物网站上的商品列表,但您将只允许经过验证和授权的用户发布新商品。
以下是使用浏览器将请求复制为 CURL 的方法。
https://developers.google.com/web/updates/2015/05/replay-a-network-request-in-curl
当我使用上述方法复制登录请求的 CURL 命令时,我收到了 200 响应。但是,它的编码搞砸了。重要的一点是,API 确实返回 200 响应。你只需要微调参数。祝你好运 :)
推荐阅读
- vbscript - 使用 VBScript 从目录中提取所有 .gz 文件
- jquery - JQuery隐藏可折叠菜单点击其他任何地方 - 模糊 -
- java - 我的 JList 没有显示
- algorithm - 绘制最大长度为 4 的 BFS 图形
- javascript - 在 React.js 和 sass/css 中隐藏带有过渡的汉堡侧边栏
- java - 如何在 iText 7 中查找文本位置和边界
- c++ - 读取和写入文件
- python - 如何使用python和selenium将文本发送到类型属性为隐藏的输入元素
- sql-server - 在 ASP.NET Core 应用程序中使用 Entity Framework Core 和 SQL Server 2017 的多个租户
- python - 在同一个项目中使用 Python2 和 Python3