HTTP 中 GET 和 POST 的区别

Difference between GET and POST in HTTP

有一些帖子说POSTGET的区别,但我的问题更具体,这里是:

使用这个 VBScript 示例,我可以使用 GET 从服务器发送和获取数据:

Send "https://www.server.com/send.php"
Sub Send(url)
    Dim objHTTP, MyResponse
    Set objHTTP = CreateObject( "WinHttp.WinHttpRequest.5.1" )
    objHTTP.Open "GET", url, False
    objHTTP.Send "One Plus One"
    MsgBox objHTTP.ResponseText()
End Sub

但是如果我将 GET 更改为 POST,这个相同的示例仍然有效,所以:

  1. 有什么区别?
  2. 同时发送和接收数据应该用什么?

这是我在服务器上的 PHP 代码:

<?php
$stdin = fopen('php://input', 'r');

$Data = '';
while (!feof($stdin))
  $Data .= fread($stdin, 8192);

$Data .= " Equals Two";

echo $Data;
?>

请注意,我没有提到 HTML,因为我的代码与它无关,但如果差异与 HTML 有关,我很乐意了解.

一个POST请求有一个正文,这个正文携带了你试图随请求发送的信息,POST的主要优点是这个数据可能很长,你甚至可以发送文件。

GET 没有主体,如果你想发送任何数据,它必须在查询字符串中携带,这基本上是 ? 之后的东西 URL。示例:

https://google.com/?q=this+is+the+data

随着数据进入 URL,您无法真正将任何您想要的东西放在那里。大多数浏览器和服务器会将最大 URL 大小限制在几千字节的数量级,如果您打算 post 长文本或文件,它根本不是很有用。

如果你要发送和接收数据,你必须使用POST方法发送数据到将处理这个数据的服务器并且return一个结果,这个结果可以显示直接在界面上或保存在用户的文件中。以后使用。最实用的方法是使用JSON。将结果保存为临时文件或 * .json 文件。