请求中的数据和参数有什么区别?

问题描述:

我使用python requests模块,我把我的PARAMS像在此之前:请求中的数据和参数有什么区别?

requests.post(url=url, params=params) 

但今天,我发现我把我的数据是这样,它失败了,我改成这样:

requests.post(url=url, data=params) 

那就没问题,dataparams有什么区别?

我观察到请求得到一个标头X-Requested-With:XMLHttpRequest,是因为这个原因吗?

+0

你确定你没有得到而不是发布吗? –

+0

以参数形式发送时出现了什么错误? –

根据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) 

打印

http://httpbin.org/get?key2=value2&key1=value1

PARAMS而数据在request body发送在(附加在)的URI(http://www.answer.com/here?param1=1&param2=2)被发送。通常情况下,敏感数据或以大量发送的数据会发布到正文中,因为它更容易到达secure,并且不会导致巨大的URI。

+0

为什么更安全? –

+0

由于URI是以纯文本形式发送的,并且通常存储在服务器日志中,所以如果您发送的是类似安全令牌/用户名/密码的东西,则任何人都可以看到(并使用它)。 –

+0

数据仍可能被嗅探。你可以使用'https://'来保护。编辑:**不,你不能** –