最新的Web开发教程
 

HTTP方法:GET与POST


两个最常用的HTTP方法是:GET和POST。


什么是HTTP?

超文本传输​​协议(HTTP)的目的是使客户端和服务器之间的通信。

HTTP效果作为客户端和服务器之间的请求 - 响应协议。

Web浏览器可能是客户端,并承载一个网站可能是服务器的计算机上的应用程序。

例如:客户端(浏览器)提交的HTTP请求到服务器; 则服务器返回到客户端的响应。 响应包含有关请求状态信息,并也可含有所请求的内容。


两个HTTP请求方法:GET和POST

为客户端和服务器之间的请求 - 响应两种常用的方法有:GET和POST。

  • GET -从指定的资源请求数据
  • POST -提交要处理的数据到一指定的资源

GET方法

注意查询字符串(名称/值对)在GET请求的URL发送:

/test/demo_form.asp?name1=value1&name2=value2

在GET请求其他一些注意事项:

  • GET请求可以被缓存
  • GET请求留在浏览器历史记录
  • GET请求可以添加书签
  • GET敏感数据时,要求绝对不能用
  • GET请求有长度限制
  • GET请求应该只用于检索数据

POST方法

注意查询字符串(名称/值对)在POST请求的HTTP邮件正文发送:

POST /test/demo_form.asp HTTP/1.1
Host: w3ii.com
name1=value1&name2=value2

在POST请求的其他一些注意事项:

  • POST请求不会被缓存
  • POST请求不留在浏览器历史记录
  • POST请求,不可添加书签
  • POST请求对数据长度没有限制

比较GET与POST

下表比较了这两种HTTP方法:GET和POST。

得到 POST
BACK按钮/重装 无害 数据将被重新提交(浏览器应该提醒的数据是将要被重新提交的用户)
书签 可以书签 不能书签
网页快照 可被高速缓存 没有缓存
编码类型 应用程序/ x-WWW的形式,进行了urlencoded 应用程序/ x-WWW窗体-urlencoded或多部分/表单数据。 使用二进制数据编码的多部分
历史 参数保持在浏览器历史记录 参数不保存在浏览器历史记录
数据长度限制 是的,发送数据时,GET方法增加了数据的URL; 和URL的长度是有限的(最大URL长度为2048个字符) 无限制
关于数据类型限制 只允许ASCII字符 无限制。 二进制数据也允许
安全 相比POST GET不太安全,因为发送的数据是URL的一部分

发送密码或其他敏感信息时,切勿使用GET!
POST比GET更安全一点,因为这些参数并不存储在浏览器历史记录或Web服务器日志
能见度 数据的所有人都可以在网址 数据不显示在URL

其他HTTP请求方法

下表列出了一些其他的HTTP请求方法:

方法 描述
HEAD 同GET,但仅返回HTTP头,没有文档主体
PUT 上载到指定的URI的表示
DELETE 删除指定的资源
OPTIONS 返回的HTTP方法服务器支持
CONNECT 请求连接到一个透明的TCP / IP转换隧道