HTTP 协议简介
HTTP 协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写。是用于从万维网(WWW:World Wide Web)服务器传输超文本到本地浏览器的传输协议。是基于TCP/IP通信协议来传递数据的。
HTTP 传输数据主要包括HTML文件,图片文件等。协议工作于客户端-服务器架构上。一般是浏览器作为 HTTP 客户端通过URL向 HTTP 服务端(web服务器发送所有请求,默认端口为80)
协议特点:
- 无连接:每次连接只处理一个请求。服务器处理完请求,并收到客户的应答即断开连接。
- 媒体是独立的:只有客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过 HTTP发送。客户端和服务器指定适合的MIME-type内容类型。
- 无状态:对事物处理没有记忆能力。如果后续要处理前面的信息,必须重传。
HTTP 消息结构
客户端请求消息客户端请求消息格式如下:
- 请求行
- 请求头部
- 空行
- 请求数据
服务器响应消息服务器响应也由四部分组成:
- 状态行
- 消息头
- 空行
- 响应正文
HTTP 请求方法
HTTP1.0:GET,POST 和 HEADHTTP1.1:新增六种请求:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
方法 | 描述 |
GET | 请求指定页面信息,并返回实体主体 |
HEAD | 类似于GET请求,不过返回的响应中没有具体内容,用于获取报头 |
POST | 向指定资源提交数据处理请求(提交表单或者文件),数据包包含在请求体中。 |
PUT | 从客户端向服务器传输的数据取代指定的文档内容 |
DELETE | 请求服务器删除指定的页面 |
CONNECT | HTTP/1.1 协议预留给能够将连接改为管道方式的代理服务器 |
OPTIONS | 允许客户端查看服务器性能 |
TRACE | 回显服务器收到的请求,主要用于测试或诊断 |
PATCH | 是对PUT 方法的补充,用来对已知资源进行局部更新 |
HTTP 响应头消息
HTTP 请求头提供了关于请求,响应或者其他的发送实体消息。响应头消息如下:
应答头 | 说明 |
Allow | 服务器支持哪些请求方法(GET、POST等) |
Content-Encoding | 文档编码方法。只有在解码后才可以得到Content-Type头指定的内容类型。利用gzip压缩文档能够显著的减少HTML文档的下载时间。服务器可以通过查看Accept-Encoding(request.getHeader("Accept-Encoding")) 检查浏览器是否支持gzip. |
Content-Length | 表示内容长度。只有当浏览器使用持久连接时才需要这个数据 |
Content-Type | 表示文档属于什么MIME类型。一般默认text/plain。但通常需要显示的指定为text/html |
Date | 当前的GMT时间 |
Last-Modified | 文档最后改动时间 |
Location | 表示客户应当到哪里去提取文档 |
Refresh | 表示浏览器应该在多少时间之后刷新文档。注意Refresh头不属于HTTP 1.1正式规范的一部分,而是一个扩展,但Netscape和IE都支持它。 |
Server | 服务器名字 |
Set-Cookie | 设置和页面关联的Cookie |
HTTP 状态码
当访问一个网页时,浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页的服务器会返回一个包含HTTP状态码的信息头,用以响应浏览器请求。常见的状态码如下:
- 200:请求成功
- 301:资源(网页等)被永久转移到其他URL
- 404:请求的资源不存在
- 500:内部服务器错误
状态码分类:
分类 | 描述 |
1** | 信息,服务器收到请求,需要请求者继续执行操作 |
2** | 成功,操作被成功接收并处理 |
3** | 重定向,需要进一步操作以完成请求 |
4** | 客户端错误,请求语法错误或者无法完成请求 |
5** | 服务器错误,服务器在处理请求的过程中发生了错误 |
HTTP content-type
Content-Type (内容类型)。用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件。
- Content-Type: text/html;charset=utf-8
常见的媒体格式如下:
- text/html:HTML格式
- text/plain:纯文本格式
- text/xml:XML格式
- image/gif:gif图片格式
- image/jpeg:jpeg图片格式
- image/jpg:jpg图片格式
- image/png:png图片格式
以application开头的媒体格式类型:
- application/xhtml+xml:XHTML格式
- application/xml:XML数据格式
- application/atom + xml:Atom XML聚合格式
- application/json:JSON数据格式
- application/pdf:pdf格式
- application/msword:word文档格式
- application/octet-stream:二进制数据(如常见的文件下载)
- application/x-www-from-uelencoded:中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)