获取和发布

Anonim

获得vs Post

'Get'和'Post'是HTTP METHODS,用于将数据参数从客户端浏览器发送到服务器。这些参数可以是表单输入,搜索选项卡中的搜索查询等。每当网页必须响应用户或我们甚至可以将其称为用户交互式网页时,那么这些HTTP方法起着至关重要的作用。用于向服务器提供用户特定输入的角色。但你可能想知道为什么我们需要两种不同的方法来发送输入?要回答这个问题,了解这些方法的工作方式非常重要,这样您才能更好地理解实际的差异。

句法:

现在让我们看一下HTTP方法Get和Post的语法。

(这是Get的语法)

(这是Post的语法)

除了单词Get或Post之外,语法没有重大区别。

输入如何发送到服务器?

输入将附加到方法Get中的“?”后面的URL,而它将作为Post方法中的消息单独发送。有时,按Enter键后,您可能已在URL中看到了搜索查询。如果没有,请在Google中尝试一次。如果是Get方法,您可以在同一URL中注意“?”之后的搜索查询。同时,当我们使用Post时,我们无法读取输入,因为它单独使用而不是URL。

输入类型:

当Get将输入附加到URL时,它应该以ASCII字符的形式出现。但Post甚至可以毫无限制地发送二进制数据。因此,Post对输入类型更灵活,因为它允许ASCII和二进制数据。

参数计数:

与Post相比,Get方法只能发送有限的参数。通常,它仅限于2K,在某些情况下,服务器可以处理最多64k的计数参数。但Post方法能够以消息的形式将偶数文件发送到服务器。是的,当我们比较它们时,我们可以说Post更好地发送更多输入作为参数。

输入大小:

通常,允许的最大URL长度受我们使用的浏览器和处理URL请求的Web服务器的影响。由于Get发送输入以及URL,我们最多可以发送2048个字符,在某些情况下,它会有所不同。但是当我们使用Post方法时,输入大小没有限制。

输入的可见性:

如果您已经测试了Google搜索,那么您可能已经明白其他人可以看到Get输入。这是因为输入只是附加到URL,任何人都可以在URL空间中看到它。但是如果使用了Post方法,那么没有人可以识别我们作为输入发送的内容。如果您不太关心输入的可见性,那么请继续使用Get。否则,请使用帖子隐藏其他人的输入。

默认方法:

到目前为止,您可以理解两种方法如何将输入发送到服务器。由于使用和传输参数的简单性,HTTP的默认方法被选为“Get”。尽管Post方法比Get方法具有各种优势,但更简单的方法在默认情况下具有优先权。因此,如果未特别指定方法,则将其视为Get请求。

浏览器历史:

由于Get方法通过URL发送数据,因此已发送的数据仍保留在Web浏览器的历史记录中。因此,任何人都可以通过检查浏览器历史记录来查看我们发送给服务器的内容。 Post方法没有创造这样的机会,因为它永远不允许浏览器保存信息。实际上,当使用Post方法发送数据时,与Web浏览器无关,因为所有内容都是通过消息发送的。

哪个安全?

我们一直在分析Get和Post方法之间的各种差异,现在是时候知道哪些是安全的?让我们看一下识别相同的各种安全因素。

  • 书签: Get方法允许书签,但Post从不允许。任何人都可以在以后看到带有书签的数据,这绝对是一个安全威胁!如果您的数据包含许多敏感信息,如密码,银行帐户详细信息等,那么Get可以将所有这些信息泄露给其他人。因此,如果您处理敏感信息,最好继续使用Post。
  • 缓存: 高速缓冲存储器存储用于将来检索的信息,实际上它节省了我们的时间。虽然它似乎做了一项有用的工作,但是当缓存的信息落入到错误的手中时,存在数据泄漏的可能性。 Get允许缓存,而Post从不允许缓存!因此,Post比Get更安全。
  • 刷新或返回: 单击“刷新”或“后退”图标时,将重新执行网页的URL。但是,当旧数据驻留在系统的高速缓存中时,不会发生这种重新执行。因此,在这种情况下,有可能在刷新或返回时从服务器获取已经获取的数据。我们应该确定这种情况何时发生,无论是Get还是Post?我们知道使用Get而不是Post发生缓存,只有使用Get才能进行旧的数据检索。即使它可能发生在Post,但它在这之前要求用户许可。是的,我们会在Post中进行此类检索之前收到警报。
  • 黑客: 任何技术强大的人都可以轻松破解与Get方法关联的URL,并可以捕获我们的信息。但这对Post来说是不可能的,至少它需要付出巨大努力才能破解它!因此,大多数时候,在使用Post而不是使用Get时,我们是安全的。

何时使用Get&When使用Post?

从我们的讨论中可以清楚地看出,Get的安全性较低,在处理大量敏感信息时不宜使用。在Get的情况下,缓存和Web浏览器历史记录可以将我们的信息发送给其他人。但即使在这种情况下,Post仍然保持安全,因为它从不允许缓存,书签等。因此,最好在发送许多安全数据时使用Post。

让我们以易于理解的表格形式来看待差异。

S.No

差异在于

HTTP请求

得到

POST

1 句法 使用关键字'get'。 使用关键字“发布”。
2 如何发送输入? 以及在符号'?'后附加的URL。 以消息的形式。
3 输入类型 ASCII字符。 ASCII字符或二进制。
4 参数计数 可以根据服务器处理2k到64k的参数。 没有限制。
5 输入大小 最多允许2048个字符。 没有限制。
6 发送数据的可见性 所有人都可以看到,因为它位于URL空间中。 无法看到它作为消息发送。
7 默认HTTP方法 是的 没有。
8 浏览器历史 发送的数据保留在Web浏览器历史记录中,以后可供任何人查看。 发送的数据nev.er驻留在Web浏览器历史记录中,因此以后没有人可以看到它。
9 书签 它允许将URL加入书签,然后又将发送的数据加入书签。 即使网页已添加书签,也与发送的数据无关。由于书签页面不存储任何用户信息。
10 高速缓存 缓存页面存储用户输入并允许将来检索。 缓存页面永远不会存储用户输入。
11 刷新或返回 如果较旧的执行保留在缓存内存中,则Refresh或Back操作不会重新执行请求。而且,这种从高速缓存的检索在没有任何警告消息的情况下发生。因此,用户可能认为它是最新的,但反过来,服务器可能包含不同的数据。 “刷新”或“后退”操作仅在向用户发送警报消息后才从缓存中提取数据。用户可以取消它,甚至可以重新执行它以从缓存中获取最新数据。
12 黑客 它可以很容易地完成。 很难入侵。
13 什么时候用? 它最适合发送不太敏感的数据,例如搜索查询,聊天消息,社交媒体内容,在线研究等,而不关心安全性。 它最适合发送许多敏感数据,如密码,银行帐户详细信息等,其中安全性最受关注。

所以我们很清楚Get和Post正在向服务器发送输入作业,但两者的工作方式不同。根据需要,我们可以使用apt