What
超文本传输协定(英语:H yper T ext T ransfer P rotocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议[1]。
请求结构
[请求方法][空格][URL][空格][协议版本][回车符][换行符] 请求行(request line)
[头部字段]:[值][回车符][换行符]
[头部字段]:[值][回车符][换行符]
[头部字段]:[值][回车符][换行符] 请求头部(headers)
...
[头部字段]:[值][回车符][换行符]
[请求数据]
相应结构
[协议版本][空格][状态码][空格][状态结果]
[消息报头] [Date,Content-Type,Content-Length]
[空行]
[响应正文]
HTTP 请求方法
| 方法 | 描述 |
|---|---|
| GET | 向指定的资源发出「显示」请求。使用GET方法应该只用在读取资料,而不应当被用于产生副作用的操作中 |
| POST | 向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据被包含在请求本文中。这个请求可能会建立新的资源或修改现有资源,或二者皆有。每次提交,表单的数据被浏览器用编码到HTTP请求的body里。浏览器发出的POST请求的body主要有两种格式,一种是application/x-www-form-urlencoded用来传输简单的数据,大概就是"key1=value1&key2=value2"这样的格式。另外一种是传文件,会采用multipart/form-data格式。采用后者是因为application/x-www-form-urlencoded的编码方式对于文件这种二进制的数据非常低效 |
| HEAD | 与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部份。它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中「关于该资源的信息」(元信息或称元资料)。 |
| PUT | 向指定资源位置上传其最新内容。 |
| DELETE | 请求服务器删除Request-URI所标识的资源。 |
| TRACE | 回显服务器收到的请求,主要用于测试或诊断。 |
| OPTIONS | 这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用'*'来代替资源名称,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作 |
| CONNECT | HTTP/1.1协议中预留给能够将连接改为隧道方式的代理服务器。通常用于SSL加密伺服器的连结(经由非加密的HTTP代理伺服器)。 |
| PATCH | 用于将局部修改应用到资源。 |
HTTP 响应码含义
| 响应码 | 含义 |
|---|---|
| 1xx消息 | 请求已被接受,继续处理 |
| 2xx成功 | 请求已成功被服务器接收,理解,并接受 |
| 3xx重定向 | 需要后续操作才能完成这一请求 |
| 4xx请求错误 | 请求含有词法错误或者无法被执行 |
| 5xx服务器错误 | 服务器在处理某个正确请求时发生错误 |
HTTP 响应头信息
| 响应头 | 含义 |
|---|---|
| Allow | 服务器支持那些请求方法(如Get,Post) |
| Content-Encoding | 文档编码方法。只有在解码之后才可以得到Content-Type头指定的内容类型。利用gzip可以明显减少HTML文档的下载时间。 |
| Content-Length | 表示内容长度,只有当浏览器使用持久HTTP链接时才需要这个数据 |
| Content-Type | 表示后面的文档属于什么MIME类型。Servlet默认为text/plain,但通常需要显式的指定为text/html |
| Date | 当地的GMT时间,可以使用setDateHeader来设置这个头以避免时间格式的麻烦 |
| Expires | 应该在什么时候认为文档过期,从而不再缓存它 |
| Last-Modified | 文档最后的改动时间。 |
| Location | 表示客户应该到哪里去提取文档 |
| Refresh | 表示浏览器应该都就之后刷新文档,以秒计 |
| Server | 服务器名字 |
| Set-Cookie | 设置和页面关联的Cookie |
| WWW-Autheniticate | 客户应该在Authorization头中提供什么类型的授权信息,在包含401状态行的应答中这个头是必须的 |
HTTP Content-Type
内容类型,一般指网页中存在的Content-Type,用于定义网络文件的类型,和网页的编码,决定浏览器以什么形式,什么编码读取这个文件。
常见的媒体格式
| 类型 | 含义 |
|---|---|
| text/html | HTML格式 |
| text/plain | 纯文本格式 |
| text/xml | xml格式 |
| image/gif | gif图片格式 |
| image/jpeg | jpg图片格式 |
| image/png | png图片格式 |
| application/xhtml+xml | XHTML格式 |
| application/xml | XML数据格式 |
| application/json | json数据格式 |
| application/atom+xml | Atom XML聚合格式 |
| application/pdf | pdf格式 |
| application/msword | word文档格式 |
| application/octet-stream | 二进制流格式 |
| application/x-www-form-urlencoded | form表单被编码为key/value格式发送到服务器(表单默认的提交格式) |
| multipart/form-data | 需要表单中进行文件上传时,就需要该格式 |