Http

82 阅读4分钟

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请求,可以测试服务器功能是否正常运作
CONNECTHTTP/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/htmlHTML格式
text/plain纯文本格式
text/xmlxml格式
image/gifgif图片格式
image/jpegjpg图片格式
image/pngpng图片格式
application/xhtml+xmlXHTML格式
application/xmlXML数据格式
application/jsonjson数据格式
application/atom+xmlAtom XML聚合格式
application/pdfpdf格式
application/mswordword文档格式
application/octet-stream二进制流格式
application/x-www-form-urlencodedform表单被编码为key/value格式发送到服务器(表单默认的提交格式)
multipart/form-data需要表单中进行文件上传时,就需要该格式