HTTP协议相关了解
http
什么是http协议
- 所谓协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规则。
- 超文本传输协议(HTTP)作为其中一种,它允许将超文本标记语言文档从web服务器传送给客户端。(由于使用MIME机制/多用途因特网邮件扩展,可以传输多种类型的文件)
URL
URL(Uniform Resource Locator 统一资源定位符)用于标记一个网络上的资源
基本格式如下:
schema://login@host[:port]/path/..../[?query-string][#anchor]
scheme: 协议名(如http,https,ftp)
login: 登陆信息
host: 服务器IP/域名
port: HTTP服务的默认端口是80,这种情况下端口号可以省略。如果使用了别的端口,必须指明,例如http://www.gongyang.com:8080
path: 资源路径
query-string: 发送给web服务器的数据
anchor: 片段标识符
举个例子:
http://www.gongyang.com/sj/test/test.aspx?name=sivergn&x=true#stuff
schema: http
host: www.mywebsite.com
path: /sj/test/test.aspx
Query String: name=sviergn&x=true
Anchor: stuff
HTTP消息结构
请求消息 Request
HTTP 请求消息(HTTP Request),由三部分组成:
第1部分叫Request line
第2部分叫Request header
第3部分是body(header和body之间有个空行)。
HTTP请求消息示意图详细说明如下:
- METHOD:表示请求方法,比如POST、GET和PUT等;
- path-to-resoure :表示请求的资源。
- Http/version-number :表示HTTP协议的版本号,如HTTP/1.1
- Request消息常用方法:Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE,对应着对资源的查、改、增和删 4个操作。一般GET用于获取/查询资源信息,POST一般用于更新资源信息;这应该是GET和POST的本质区别。
更多关于HTTP请求消息的知识要点:
- GET提交,请求的数据会附在URL之后(就是据放置在HTTP协议头中),以“?”分割URL
输数据,多个参数用“&”连接;例如:
login.action?name=tom&password=securiy
- POST提交:把提交的数据放置在是HTTP包的正文中。上文示例中name=Professional&id=11101就是实际的传输数据;
- 数据长度:HTTP协议没有对传输的数据和URL长度进行限制, 但特定浏览器和服务器对URL长度有限制, 因此对于GET提交时,传输数据就会受到URL长度的限制; 由于POST操作不是通过URL传值,理论上数据长度不受限;
- 安全性:POST的安全性要比GET的安全性高,通过GET提交数据,用户名和密码将明文出现在URL上,容易被他人看到,URL信息也可能会被记录到历史纪录中。
响应消息 Response
HTTP 响应消息(HTTP Response),也是由三部分组成:
第1部分叫Response line
第2部分叫Response header
第3部分是body(header和body之间有个空行)。
HTTP响应消息示意图详细说明如下:
- HTTP/version-number:HTTP协议的版本号;
- status-code :状态码
1XX 提示信息 - 表示请求已被成功接收,继续处理
2XX 成功 - 表示请求已被成功接收,理解,接受
3XX 重定向 - 要完成请求必须进行更进一步的处理
4XX 客户端错误 - 请求有语法错误或请求无法实现
5XX 服务器端错误 - 服务器未能实现合法的请求
- message:状态消息
- 请求行最常用的状态码:
200 (OK): 找到了该资源,并且一切正常。
304 (NOT MODIFIED): 该资源在上次请求之后没有任何修改。这通常用于浏览器的缓存机制。
401 (UNAUTHORIZED): 客户端无权访问该资源。这通常会使得浏览器要求用户输入用户名和密码,以登录到服务器。
403 (FORBIDDEN): 客户端未能获得授权。这通常是在401之后输入了不正确的用户名或密码。
404 (NOT FOUND): 在指定的位置不存在所申请的资源。
理解HTTP通讯方式
- 客户端和服务器的通讯是有来有回的,而且总是以客户端首先发起请求,服务器进行响应的形式发生。
- 所谓通讯就是传输数据,根据数据的大小,可以将其分为三种类型:(c表示客户端;s表示服务器)
c小:s小,适用方法GET / POST。
c小:s大,适用方法GET / POST。
c大:s小,适用方法POST。