首页 文章

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

提问于
浏览
204

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

similar question

14 回答

  • 221

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

    另外,请注意PHP混淆了一些概念 . POST请求从查询字符串和请求主体获取输入 . GET请求只从查询字符串中获取输入 . 所以POST请求是GET请求的超集;你可以在POST请求中使用 $_GET ,甚至在 $_POST$_GET 中具有相同名称的参数也是有意义的 .

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

  • 11

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

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

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

  • -9

    最好的答案是第一个 .

    您正在使用:

    • GET 当您想要检索数据时(GET DATA) .

    • POST 何时要发送数据(POST DATA) .

  • 28

    w3schools.com这里是GET请求的关键点

    GET请求可以缓存GET请求保留在浏览器历史记录中GET请求可以被加书签GET请求在处理敏感数据时永远不应该使用GET请求具有长度限制GET请求应该仅用于检索数据

    这是POST请求的关键点

    POST请求永远不会被缓存POST请求不会保留在浏览器历史记录中POST请求无法加入书签POST请求对数据长度没有限制

  • 73

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

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

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

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

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

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

  • 15

    当我在发送信息 to 一个URL时,我正在检索信息时使用GET from 一个URL和POST .

  • 17

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

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

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

  • 8

    W3C document解释了HTTP GET的使用和POST .

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

    摘要是(文件第1.3节):

    如果交互更像是一个问题(即,它是一个安全的操作,如查询,读取操作或查找),请使用GET . 如果以下情况,请使用POST:交互更像订单,或者交互以用户可能感知的方式更改资源的状态(例如,订阅服务),或者用户对结果负责 . 相互作用 .

  • 19

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

  • 0

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

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

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

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

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

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

  • 6

    GETPOST 是可以实现类似目标的HTTP方法

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

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

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

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

  • 1
    • GET方法用于发送不太敏感的数据,而POST方法用于发送敏感数据 .

    • 与GET方法相比,使用POST方法可以发送大量数据 .

    • GET方法发送的数据在浏览器 Headers 栏中可见,而POST方法发送的数据不可见 .

  • 10

    如果要从URL检索资源,请使用GET方法 . 如果你点击浏览器的后退按钮,你总是可以看到最后一页,它可能被加入书签,因此它不如POST方法安全 .

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

  • 36

    The GET method:

    • 仅用于发送256个字符的日期

    • 使用此方法时,可以在浏览器上看到该信息

    • 这是表单使用的默认方法

    • 它不那么安全 .


    The POST method:

    • 用于发送无限数据 .

    • 使用此方法,无法在浏览器上看到该信息

    • 您可以明确提及 POST 方法

    • 它比 GET 方法更安全

    • 它提供了更多高级功能

相关问题