当前位置:  开发笔记 > 编程语言 > 正文

我什么时候应该使用GET或POST方法?他们之间有什么区别?

如何解决《我什么时候应该使用GET或POST方法?他们之间有什么区别?》经验,为你挑选了10个好方法。

使用GETPOST方法有什么区别?哪一个更安全?他们每个人的(dis)优势是什么?

(类似问题)



1> troelskn..:

这不是安全问题.HTTP协议将GET类型的请求定义为幂等,而POST可能有副作用.简单来说,这意味着GET用于查看内容而不更改内容,而POST则用于更改内容.例如,搜索页面应使用GET,而更改密码的表单应使用POST.

另请注意,PHP会混淆概念.POST请求从查询字符串和请求主体获取输入.GET请求只从查询字符串中获取输入.所以POST请求是GET请求的超集; 你可以使用$_GET一个POST请求,它甚至可能是有意义的有同名的参数$_POST,并$_GET意味着不同的事情.

例如,假设您有一个用于编辑文章的表单.article-id可以在查询字符串中(因此,可以通过$_GET['id']),但是假设您要更改article-id.然后新的id可以出现在请求主体($_POST['id'])中.好吧,也许这不是最好的例子,但我希望它能说明两者之间的区别.


绝对是GET和POST之间差异的安全方面.例如,恶意站点可以在图像标记中粘贴任意GET请求,从而导致用户对另一台服务器进行GET.如果这个GET就像http:// otherserver/deletemyaccount那么糟糕的事情发生了.
我的意思是$ _POST的内容不会被恶意用户神奇地隐藏.所有事物编程都有明显的安全方面.

2> IAdapter..:

当用户在表单中输入信息并单击"提交"时,有两种方法可以将信息从浏览器发送到服务器:在URL中,或在HTTP请求的正文中.

前面的示例中使用的GET方法将名称/值对附加到URL.遗憾的是,URL的长度是有限的,因此只有少数参数才能使用此方法.如果表单使用大量参数,或者参数包含大量数据,则URL可能会被截断.此外,在URL上传递的参数在浏览器的地址字段中可见,而不是显示密码的最佳位置.

替代GET方法的是POST方法.此方法将名称/值对打包在HTTP请求的正文中,这样可以生成更清晰的URL,并且对表单输出不施加任何大小限制.它也更安全.


服务器无法信任客户端.围绕错误假设设计您的应用程序远非安全.
因为它更难改变?你可以在地址栏中更改GET,但使用POST并不是那么容易.

3> 小智..:

最好的答案是第一个.

您正在使用:

GET当你想获取数据(GET DATA).

POST当您要发送数据(POST数据).


一般来说都是如此."GET"完全能够'发送'数据,所以不是一个非常准确的答案.
什么是请求/响应服务模式,您想要同时执行这两种操作?;)我希望在大多数情况下使用POST,当我需要回复时.

4> Einstein..:

使用GET有两个常见的"安全性"含义.由于数据出现在URL字符串中,因此可能有人在地址栏/ URL上查看您可能无法查看的内容,例如可能用于劫持会话的会话cookie.请记住,每个人都有可拍照手机.

GET的另一个安全含义与作为请求URL的一部分记录到大多数Web服务器访问日志的GET变量有关.根据情况,监管环境和数据的一般敏感性,这可能会引起关注.

某些客户端/防火墙/ IDS系统可能会对包含过量数据的GET请求不满意,因此可能会提供无法解决的结果.

POST支持高级功能,例如支持用于将文件上载到Web服务器的多部分二进制输入.

POST需要内容长度标头,这可能会增加特定于应用程序的客户端实现的复杂性,因为提交的数据大小必须事先知道,以防止客户端请求以独占的单通道增量模式形成.也许是一个小问题对于那些选择滥用HTTP作为RPC传输的人.

其他人已经在覆盖语义差异和这个问题的"何时"部分方面做得很好.



5> Mark Biek..:

当我 URL中检索信息时,我使用GET,当我 URL 发送信息时,我使用POST .



6> Grant..:

如果有大量数据或敏感信息排序(真正敏感的东西也需要安全连接),你应该使用POST.

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

请注意使用GET方法点击REFRESH的人,因为每次都会再次发送数据而不会警告用户(POST有时会警告用户重新发送数据).



7> chus..:

本W3C文档解释了HTTP GET和POST的使用.

我认为这是一个权威的来源.

摘要是(文件第1.3节):

如果交互更像是一个问题(即,它是一个安全的操作,如查询,读取操作或查找),请使用GET.

使用POST如果:

交互更像是一个订单,或者

交互以用户将感知的方式(例如,对服务的订阅)改变资源的状态,或

用户要对交互结果负责.


我认为可以进一步概括为:当服务器的状态没有改变时GET,当它是POST时.

8> sarsnake..:

Get和Post方法与您使用的服务器技术无关,它在php,asp.net或ruby中的工作方式相同.GET和POST是HTTP协议的一部分.如上所述,POST更安全.POST表单也不会被浏览器缓存.POST还用于传输大量数据.



9> Sarel Botha..:

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

像Google Web Accelerator这样的网络加速器会点击页面上的所有(GET)链接并缓存它们.如果链接对事物进行更改,这非常糟糕.

浏览器缓存GET请求,因此即使用户单击链接,它也不会向服务器发送执行更改的请求.

要保护您的站点/应用程序免受CSRF攻击,您必须使用POST.要完全保护您的应用程序,您还必须在服务器上生成唯一标识符,并在请求中发送该标识符.

此外,不要将敏感信息放在查询字符串中(仅限GET选项),因为它会显示在地址栏,书签和服务器日志中.

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



10> 小智..:

GET并且POST可以实现类似目标的HTTP方法

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

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

POST可能涉及任何事情,例如存储或更新数据,订购产品或发送电子邮件.POST方法有一个身体.

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

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有