来自python的请求从nodejs得到不同的响应
Posted
技术标签:
【中文标题】来自python的请求从nodejs得到不同的响应【英文标题】:request from python get different response from nodejs 【发布时间】:2020-06-11 22:01:26 【问题描述】:我正在尝试从 nodejs 发出相同的请求。 python代码是
import requests
r = requests.post(url,
data=data,
headers=
'User-Agent': self.ua,
'Content-Type': 'application/x-www-form-urlencoded'
)
在节点中,我尝试了 node-fetch 和 Axios 和请求,但没有得到相同的响应,我还尝试了来自 bash 的 CURL,但得到了相同的节点响应,我尝试打印 python 标头 print(r.request.headers)并将其复制粘贴到节点中但得到不同的响应
Axios.post(url,
data,
headers:
"User-Agent":
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/76.0.3809.100 Safari/537.36",
"Content-Type": "application/x-www-form-urlencoded",
)
.then(text => console.log(text.data))
.catch(err =>
console.log(err);
);
我在 python 中得到了不同的结果,我得到了我期望的结果,但在节点中我得到了 html 响应
Sorry, could not complete request because: <div class="tk-intro" style="font-size: 14px;color:#ff090f;">application information was not supplied.</div>
但在 python 中工作正常
【问题讨论】:
这需要更多的解释。也许您将不得不编辑代码并提供更多代码/上下文 我传递了相同的数据、相同的 url 和相同的标题,但它在 python 上完美运行,在节点和邮递员中失败 @AbanoubIstfanous,尝试代理每个请求并逐行比较两个请求。 @AbanoubIstfanous 我认为这些信息还不够。 fails 是什么意思?无论如何,我们没有输出或minimal reproducible example,我不确定我们能实际做多少。 请不要将这种信息作为评论分享,这很难阅读。改为编辑您的帖子。 【参考方案1】:我尝试打印请求标头和 url 和数据,发现我应该将数据转换为这样的查询字符串
"appleId=email@gmail.com&accountPassword=xxxxxx"
而不是将其作为 JSON 传递
"appleID": "email@gmail.com",
"accountPassword": "xxxx"
【讨论】:
以上是关于来自python的请求从nodejs得到不同的响应的主要内容,如果未能解决你的问题,请参考以下文章
当我直接从 MySQL 获取时,NodeJS 响应 MySQL 时区不同
如何使用nodejs和request将不同请求的响应放在同一个文档中?