使用 GET 或 POST 方法有什么区别?哪一种更安全?它们各自的优缺点是什么?
GET
POST
(类似问题)
当用户在表单中输入信息并单击“提交”时,可以通过两种方式将信息从浏览器发送到服务器:在 URL 中,或在 HTTP 请求正文中。
前面示例中使用的 GET 方法将名称/值对附加到 URL。不幸的是,URL 的长度是有限的,因此此方法仅在参数很少的情况下才有效。如果表单使用大量参数,或者参数包含大量数据,则 URL 可能会被截断。此外,在 URL 上传递的参数在浏览器的地址字段中可见,而不是显示密码的最佳位置。
GET 方法的替代方法是 POST 方法。此方法将名称/值对打包在 HTTP 请求的正文中,这使得 URL 更清晰,并且对表单输出没有大小限制。它也更安全。
这不是安全问题。 HTTP 协议将 GET 类型的请求定义为幂等,而 POST 可能有副作用。用简单的英语来说,这意味着 GET 用于查看某些内容而不更改它,而 POST 用于更改某些内容。例如,搜索页面应使用 GET,而更改密码的表单应使用 POST。
另外,请注意 PHP 有点混淆了这些概念。 POST 请求从查询字符串和请求正文获取输入。 GET 请求只是从查询字符串获取输入。所以 POST 请求是 GET 请求的超集;您可以在 POST 请求中使用 $_GET,甚至可以在 $_POST 和 $_GET 中使用相同名称的参数这意味着不同的事情。
$_GET
$_POST
例如,假设您有一个用于编辑文章的表单。文章 ID 可能位于查询字符串中(因此可以通过 $_GET['id'] 获得),但假设您想要更改文章 ID。然后,新的 ID 可能会出现在请求正文中 ($_POST['id'])。好吧,也许这不是最好的例子,但我希望它能说明两者之间的区别。
$_GET['id']
$_POST['id']
当用户在表单中输入信息并单击“提交”时,可以通过两种方式将信息从浏览器发送到服务器:在 URL 中,或在 HTTP 请求正文中。
前面示例中使用的 GET 方法将名称/值对附加到 URL。不幸的是,URL 的长度是有限的,因此此方法仅在参数很少的情况下才有效。如果表单使用大量参数,或者参数包含大量数据,则 URL 可能会被截断。此外,在 URL 上传递的参数在浏览器的地址字段中可见,而不是显示密码的最佳位置。
GET 方法的替代方法是 POST 方法。此方法将名称/值对打包在 HTTP 请求的正文中,这使得 URL 更清晰,并且对表单输出没有大小限制。它也更安全。
这不是安全问题。 HTTP 协议将 GET 类型的请求定义为幂等,而 POST 可能有副作用。用简单的英语来说,这意味着 GET 用于查看某些内容而不更改它,而 POST 用于更改某些内容。例如,搜索页面应使用 GET,而更改密码的表单应使用 POST。
另外,请注意 PHP 有点混淆了这些概念。 POST 请求从查询字符串和请求正文获取输入。 GET 请求只是从查询字符串获取输入。所以 POST 请求是 GET 请求的超集;您可以在 POST 请求中使用
$_GET
,甚至可以在$_POST
和$_GET
中使用相同名称的参数这意味着不同的事情。例如,假设您有一个用于编辑文章的表单。文章 ID 可能位于查询字符串中(因此可以通过
$_GET['id']
获得),但假设您想要更改文章 ID。然后,新的 ID 可能会出现在请求正文中 ($_POST['id']
)。好吧,也许这不是最好的例子,但我希望它能说明两者之间的区别。