<form>
元素的 method 属性指定了数据如何发送到服务器。
HTTP 方法声明了对提交到服务器的数据执行什么操作。HTTP 协议提供了几种方法,HTML 表单元素可以使用两种方法发送用户数据
- GET 方法 - 用于从指定的资源请求数据
- POST 方法 - 用于向服务器发送数据以更新资源
GET 方法
HTML GET 方法用于从服务器获取资源。例如,
<form method="get" action="www.programiz.com/search">
<input type="search" name="location" placeholder="Search.." />
<input type="submit" value="Go" />
</form>
当我们通过在输入字段中输入 California 提交上述表单时,发送到服务器的请求将是 www.programiz.com/search/?location=California
。
HTTP GET 方法在 URL 末尾添加一个查询字符串以将数据发送到服务器。查询字符串的形式是键值对,后跟 ?
符号。
从 URL 中,服务器可以解析用户提交的值,其中
- 键 - location
- 值 - California
注意: 如果有多个查询,查询字符串将用 &
符号分隔。
POST 方法
HTTP POST 方法用于将数据发送到服务器进行进一步处理。例如,
<form method="post" action="www.programiz.com/user">
<label for="firstname">First name:</label>
<input type="text" name="firstname" /><br />
<label for="lastname">Last name:</label>
<input type="text" name="lastname" /><br />
<input type="submit" />
</form>
当我们提交表单时,它会将用户输入的数据添加到发送到服务器的请求正文中。请求看起来像
POST /user HTTP/2.0
Host: www.programiz.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 33
firstname=Robin&lastname=Williams
发送的数据对用户来说并不容易看到。但是,我们可以使用浏览器开发工具等特殊工具检查发送的数据。
GET 与 POST
GET | POST |
---|---|
使用 GET 方法发送的数据在 URL 中可见。 | 使用 POST 方法发送的数据不可见。 |
GET 请求可以被书签。 | POST 请求不能被书签。 |
GET 请求可以被缓存。 | POST 请求不能被缓存。 |
GET 请求有 2048 个字符的限制。 | POST 请求没有限制。 |
GET 请求只允许 ASCII 字符。 | POST 请求允许所有数据 |