首页 > 解决方案 > 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 中尝试过,但遇到了同样的问题。

标签: postpython-requests

解决方案


后端可以为 GET 开辟路线,但不能为 POST 开辟路线。所以这不足为奇。例如,您可以允许用户获取购物网站上的商品列表,但您将只允许经过验证和授权的用户发布新商品。

以下是使用浏览器将请求复制为 CURL 的方法。

https://developers.google.com/web/updates/2015/05/replay-a-network-request-in-curl

当我使用上述方法复制登录请求的 CURL 命令时,我收到了 200 响应。但是,它的编码搞砸了。重要的一点是,API 确实返回 200 响应。你只需要微调参数。祝你好运 :)


推荐阅读