请求中的数据和参数有什么区别?
我使用python requests
模块,我把我的PARAMS像在此之前:请求中的数据和参数有什么区别?
requests.post(url=url, params=params)
但今天,我发现我把我的数据是这样,它失败了,我改成这样:
requests.post(url=url, data=params)
那就没问题,data
和params
有什么区别?
我观察到请求得到一个标头X-Requested-With:XMLHttpRequest
,是因为这个原因吗?
根据requests documentation a requests.post(url, data=data)
将发出HTTP POST请求,而requests.post(url, params=params)
将在URL中传递参数,例如,
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get("http://httpbin.org/get", params=payload)
print(r.url)
打印
PARAMS而数据在request body发送在(附加在)的URI(http://www.answer.com/here?param1=1¶m2=2
)被发送。通常情况下,敏感数据或以大量发送的数据会发布到正文中,因为它更容易到达secure,并且不会导致巨大的URI。
为什么更安全? –
由于URI是以纯文本形式发送的,并且通常存储在服务器日志中,所以如果您发送的是类似安全令牌/用户名/密码的东西,则任何人都可以看到(并使用它)。 –
数据仍可能被嗅探。你可以使用'https://'来保护。编辑:**不,你不能** –
你确定你没有得到而不是发布吗? –
以参数形式发送时出现了什么错误? –