Skip to content

9.1 GET 与 POST 区别

GET 和 POST 是 HTTP 协议中两种最常用的请求方法,用于客户端与服务器之间的数据传输。

基本区别

特性GETPOST
数据传输方式通过 URL 传递通过请求体传递
数据可见性可见(URL 中)不可见(请求体中)
数据大小限制约 2KB理论上无限制
缓存可被缓存不可被缓存
历史记录保留在浏览器历史中不保留在浏览器历史中
安全性较低较高
书签可添加为书签不可添加为书签
刷新影响刷新无影响刷新会重新提交数据

使用场景

GET 方法适用场景

  • 数据查询(如搜索、筛选)
  • 页面导航
  • 传递非敏感数据
  • 资源获取

POST 方法适用场景

  • 提交表单数据
  • 上传文件
  • 处理敏感信息(如登录、注册)
  • 执行修改操作(如添加、更新、删除数据)

示例代码

GET 方法示例

php
<?php
// get_example.php
if (isset($_GET['name']) && isset($_GET['age'])) {
    $name = $_GET['name'];
    $age = $_GET['age'];
    echo "Hello, $name! You are $age years old.<br>";
    echo "URL: " . $_SERVER['REQUEST_URI'] . "<br>";
}
?>

<!-- 表单使用 GET 方法 -->
<form action="get_example.php" method="get">
    <label>姓名: <input type="text" name="name"></label><br>
    <label>年龄: <input type="number" name="age"></label><br>
    <input type="submit" value="提交">
</form>

POST 方法示例

php
<?php
// post_example.php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    if (isset($_POST['name']) && isset($_POST['age'])) {
        $name = $_POST['name'];
        $age = $_POST['age'];
        echo "Hello, $name! You are $age years old.<br>";
        echo "数据通过 POST 方法提交,不在 URL 中显示<br>";
    }
}
?>

<!-- 表单使用 POST 方法 -->
<form action="post_example.php" method="post">
    <label>姓名: <input type="text" name="name"></label><br>
    <label>年龄: <input type="number" name="age"></label><br>
    <input type="submit" value="提交">
</form>

注意事项

  1. 安全性:不要使用 GET 方法传递敏感信息,因为数据会显示在 URL 中
  2. 数据大小:GET 方法有数据大小限制,不适合传递大量数据
  3. 缓存:GET 请求会被浏览器缓存,可能导致数据过期
  4. 幂等性:GET 请求应该是幂等的(多次请求结果相同),POST 请求可以是非幂等的
  5. 编码:GET 请求中的特殊字符需要 URL 编码

练习

  1. 创建一个使用 GET 方法的搜索表单
  2. 创建一个使用 POST 方法的登录表单
  3. 比较两种方法的实际使用效果

© 2026 编程马·菜鸟教程 版权所有