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

(类似问题)


当前回答

如果有很多数据,或者有点敏感的信息(非常敏感的东西也需要一个安全的连接),您应该使用POST。

如果您希望人们能够为您的页面添加书签,请使用GET,因为所有数据都包含在书签中。

只是要小心使用GET方法点击REFRESH的人,因为数据每次都会再次发送而不警告用户(POST有时会警告用户重发数据)。

其他回答

最好的答案是第一个。

您正在使用:

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

我发现这个列表非常有用

GET

GET请求可以被缓存 GET请求保留在浏览器历史记录中 GET请求可以被收藏 在处理敏感数据时,不应该(几乎)使用GET请求 GET请求有长度限制 GET请求应该只用于检索数据

POST

POST请求不会被缓存 POST请求不会保留在浏览器历史记录中 POST请求不能被收藏 POST请求对数据长度没有限制

在修改数据时使用POST的原因:

像谷歌这样的网络加速器将单击页面上的所有(GET)链接并缓存它们。如果链接更改了内容,这是非常糟糕的。 浏览器缓存GET请求,因此即使用户单击链接,它也不会向服务器发送执行更改的请求。 为了保护您的站点/应用程序免受CSRF的侵害,您必须使用POST。为了完全保护你的应用,你还必须在服务器上生成一个唯一的标识符,并在请求中发送。

另外,不要在查询字符串中放入敏感信息(只有GET选项),因为它会显示在地址栏、书签和服务器日志中。

希望这能解释为什么人们说POST是“安全的”。如果要传输敏感数据,则必须使用SSL。

GET和POST是HTTP方法,可以实现类似的目标

GET基本上只是为了获取(检索)数据,GET不应该有一个主体,所以除了cookie,唯一传递信息的地方是URL, URL的长度是有限的,GET比POST更不安全,因为发送的数据是URL的一部分

当发送密码、信用卡或其他敏感信息时,不要使用GET !,数据在URL中对每个人都是可见的,可以缓存数据。 GET是无害的,当我们重新加载或回调按钮,它将被book标记,参数保留在浏览器历史记录中,只允许ASCII字符。

POST可能涉及任何内容,如存储或更新数据,或订购产品,或发送电子邮件。POST方法有一个主体。

POST方法是安全的,用于将敏感和机密信息传递到服务器,它不会在URL中的查询参数中可见,并且参数不会保存在浏览器历史记录中。数据长度没有限制。当我们重新加载时,浏览器应该提醒用户数据即将被重新提交。POST方法不能被收藏

如果有很多数据,或者有点敏感的信息(非常敏感的东西也需要一个安全的连接),您应该使用POST。

如果您希望人们能够为您的页面添加书签,请使用GET,因为所有数据都包含在书签中。

只是要小心使用GET方法点击REFRESH的人,因为数据每次都会再次发送而不警告用户(POST有时会警告用户重发数据)。