HTTP超文本传输协议

HTTP,HyperText Transfer Protocol,是互联网上应用最为广泛的一种网络协议。

主要特点:简单快速,无连接,无状态,支持B/S及C/S模式。

所有的WWW文件都必须遵守这个标准。

设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。

是一个基于TCP/IP通信协议来传递数据、属于应用层的面向对象的协议。

浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。

Web服务器根据接收到的请求后,向客户端发送响应信息。

HTTP超文本传输协议

URI与URL


URI:Uniform Resource Identifiers,统一资源标识符,用来传输数据和建立连接。

URL:URI的一种特殊类型,包含了用于查找某个资源的足够的信息

普通URL组成


http://www.aaa.com:8080/news/index.asp?boardID=5&ID=24618&page=1#

  1. 协议部分:该URL的协议部分为“http:”,这代表网页使用的是HTTP协议。
  2. 域名部分:该URL的域名部分为“www.aaa.com”。也可以使用IP 地址
  3. 端口部分:域名和端口之间使用“:”作为分隔符。如果省略,将采用默认80端口
  4. 虚拟目录部分:从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分。
  5. 文件名部分:从域名后的最后一个“/”开始到“?”为止,是文件名部分,不是URL必须的部分
  6. 锚部分:从“#”开始。
  7. 参数部分:从“?”开始,参数是键值对的形式,参数之间用“&”分隔符。

HTTP请求方法


HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。

HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

  1. GET 请求指定的页面信息,并返回实体主体。
  2. POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。
    POST请求可能会导致新的资源的建立或已有资源的修改。
  3. HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头。
  4. PUT 从客户端向服务器传送的数据取代指定的文档的内容。
  5. DELETE 请求服务器删除指定的页面。
  6. CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
  7. OPTIONS 允许客户端查看服务器的性能。
  8. TRACE 回显服务器收到的请求,主要用于测试或诊断。

GET和POST的区别


  提交数据 提交的数据大小 取变量值的方法 安全性
GET GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连.
如:EditPosts.aspx?name=test1&id=123456.
有限制
因为浏览器对URL的长度有限制
Request.QueryString GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码
POST POST方法是把提交的数据放在HTTP包的Body中. 没有限制 Request.Form POST方式在form表单中,安全性相对较高

HTTP工作原理


HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/

响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一

个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。

HTTP 请求/响应的步骤:

  1. 客户端连接到Web服务器
  2. 发送HTTP请求
  3. 服务器接受请求并返回HTTP响应
  4. 释放连接TCP连接
  5. 客户端浏览器解析HTML内容

HTTP报文结构

HTTP超文本传输协议

请求头 说明
Host 接受请求的时服务器地址,可以是IP:端口号,也可以是域名
User-Agent 发送请求的应用程序名称
Connection 指定与连接相关的属性,如Connection:Keep-Alive
Accept-Charset 通知服务端可以发送的编码格式
Accept-Encoding 通知服务端可以发送的数据压缩格式
Accept-Language 通知服务端可以发送的语言
响应头 说明
Server 服务器应用程序软件的名称和版本
Content-Type 响应正文的类型(是图片还是二进制字符串)
Content-Length 响应正文长度
Content-Charset 响应正文使用的编码
Content-Encoding 响应正文使用的数据压缩格式
Content-Language 响应正文使用的语言
状态码 说明
200 响应成功
302 跳转,跳转地址通过响应头中的Location属性指定(JSP中Forward和Redirect之间的区别)
400 客户端请求有语法错误,不能被服务器识别
403 服务器接收到请求,但是拒绝提供服务(认证失败)
404 请求资源不存在
500 服务器内部错误