使用GET方法和POST方法有什么不同?哪个更安全?它们各自的优点是什么?

(类似问题)


当前回答

使用GET有两种常见的“安全”含义。由于数据出现在URL字符串,它可能有人看着你的肩膀在地址栏/URL可能能够看到一些他们不应该知道的东西,如会话cookie,可能会被用来劫持你的会话。记住,每个人都有照相手机。

GET的另一个安全含义与GET变量被记录到大多数web服务器访问日志作为请求URL的一部分有关。根据情况、监管环境和数据的总体敏感性,这可能会引发担忧。

一些客户端/防火墙/IDS系统可能会拒绝包含过多数据的GET请求,因此可能会提供不可靠的结果。

POST支持高级功能,如支持用于文件上传到web服务器的多部分二进制输入。

POST需要一个内容长度的报头,这可能会增加特定于应用程序的客户端实现的复杂性,因为必须提前知道提交的数据的大小,以防止客户端请求以单次传递的增量模式形成。对于那些选择滥用HTTP作为RPC(远程过程调用)传输的人来说,这可能是一个小问题。

其他人已经很好地涵盖了语义差异和这个问题的“何时”部分。

其他回答

GET方法用于发送不太敏感的数据,POST方法用于发送敏感数据。 与GET方法相比,使用POST方法可以发送大量数据。 GET方法发送的数据在浏览器头栏中是可见的,而POST方法发送的数据是不可见的。

使用GET有两种常见的“安全”含义。由于数据出现在URL字符串,它可能有人看着你的肩膀在地址栏/URL可能能够看到一些他们不应该知道的东西,如会话cookie,可能会被用来劫持你的会话。记住,每个人都有照相手机。

GET的另一个安全含义与GET变量被记录到大多数web服务器访问日志作为请求URL的一部分有关。根据情况、监管环境和数据的总体敏感性,这可能会引发担忧。

一些客户端/防火墙/IDS系统可能会拒绝包含过多数据的GET请求,因此可能会提供不可靠的结果。

POST支持高级功能,如支持用于文件上传到web服务器的多部分二进制输入。

POST需要一个内容长度的报头,这可能会增加特定于应用程序的客户端实现的复杂性,因为必须提前知道提交的数据的大小,以防止客户端请求以单次传递的增量模式形成。对于那些选择滥用HTTP作为RPC(远程过程调用)传输的人来说,这可能是一个小问题。

其他人已经很好地涵盖了语义差异和这个问题的“何时”部分。

如果您想从URL检索资源,请使用GET方法。如果你点击浏览器的后退按钮,你总是可以看到最后一页,而且它可能被书签,所以它不如POST方法安全。

如果你想向URL“提交”一些东西,请使用POST方法。例如,你想创建一个谷歌帐户,你可能需要填写所有的详细信息,然后你点击“提交”按钮(这里调用POST方法),一旦你提交成功,并尝试点击浏览器的返回按钮,你会得到一个错误或一个新的空白表单,而不是最后一页填满的表单。

Get和Post方法与你使用的服务器技术无关,它在php、asp.net或ruby中都是一样的。GET和POST是HTTP协议的一部分。 正如mark所指出的,POST更安全。POST表单也不被浏览器缓存。 POST也用于传输大量数据。

最好的答案是第一个。

您正在使用:

当您想检索数据时使用GET (GET data)。 当你想要发送数据时(POST data)。