HTTP字面意思即超文本传输协议
HTTP请求(request)包含三个部分:
请求行(Request line) + 请求头(Request header) + 请求体(body)
请求行又包括三部分:
method + request-URI + http-version
method代表请求方法,即我们常用的get、post等请求方式,下图代表各请求方法的意义
get |
通过请求URI获得资源 |
post | 用于添加新的资源,用于表单提交 |
put |
用于修改某个内容 |
delete | 删除某个内容 |
connect | 用于代理进行传输例如SSL |
options | 询问可以执行那些方法 |
patch | 部分文档更该 |
propfind | 查看属性 |
proppatch | 设置属性 |
mkcol | 创建集合 |
copy | 拷贝 |
move | 移动 |
lock | 加锁 |
unlock | 解锁 |
trace | 用于远程诊断服务器 |
head | 类似于get,用于检查对象是否存在用于得到元数据 |
request-URI代表请求资源的路径
http-version即http协议的版本号,当前使用的主要是HTTP/1.1版本
请求头部分关键字:
Accept:指浏览器或其他客户可以接爱的MIME文件格式。Servlet可以根据它判断并返回适当的文件格式。
User-Agent:客户端使用的操作系统和浏览器的名称和版本。例:user-agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36
Host:主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的(端口号不填的话默认为80)。例:Host:http://www.baidu.com
Referer:表明产生请求的网页URL,告诉服务器请求是从哪个链接过来的,常用于重定向请求。例:Referer:http://www.zhihuishu.com
Origin:用来说明请求从哪里发起的,包括,且仅仅包括协议和域名,这个参数一般只存在于CORS跨域请求中。例:Origin:http://www.zhihu.com
Accept-Charset:指出浏览器可以接受的字符编码。英文浏览器的默认值是ISO-8859-1.
Accept-Encoding:指出浏览器可以接受的编码方式。编码方式不同于文件格式,它是为了压缩文件并加速文件传递速度。浏览器在接收到Web响应之后先解码,然后再检查文件格式。
connection:用来告诉服务器是否可以维持固定的HTTP连接。例:Connection: keep-alive(从HTTP/1.1开始默认开启),同一个页面多个请求时,后面的请求继续使用前面请求的TCP连接通道;Connection: close,下次请求需要重新建立TCP连接
Cookie:浏览器用这个属性向服务器发送Cookie。Cookie是在浏览器中寄存的小型数据体,它可以记载和服务器相关的用户信息,也可以用来实现会话功能,很多用户登录信息也会通过cookie传递。
Content-Type:用来表名request的内容类型。可以用HttpServletRequest的getContentType()方法取得。例:Content-Type: application/x-www-form-urlencoded
Content-Length:发送给HTTP服务器数据的长度。例:Content-Length: 38
其中对于不同的请求,请求头中的参数是可变的,有一些是非必填的
请求体body
get方法请求body为空,post方法则把传参放到body中
HTTP响应(response)
跟请求类似,也是由响应行、响应头、响应体组成
响应行
Response 消息中的第一行叫做响应行,由HTTP协议版本号, 状态码, 状态消息 三部分组成。例:HTTP/1.1 200 OK(HTTP/1.1表示协议和版本,200是状态码,OK是原因)
状态码用来告诉HTTP客户端,HTTP服务器是否产生了预期的Response.
HTTP/1.1中定义了5类状态码, 状态码由三位数字组成,第一个数字定义了响应的类别
1XX 提示信息 - 表示请求已被成功接收,继续处理
2XX 成功 - 表示请求已被成功接收,理解,接受(一般请求成功最常见的就是200)
3XX 重定向 - 要完成请求必须进行更进一步的处理
4XX 客户端错误 - 请求有语法错误或请求无法实现
5XX 服务器端错误 - 服务器未能实现合法的请求
响应头(response header)
类似于请求头,下面是主要的关键字
例 | 释 |
Location: http://www.baidu.com/index.html | 服务器要求浏览器访问的URL地址 |
Server: apache tomcat | 服务器告诉浏览器服务器的名字 |
Content-Encoding: gzip | 服务器通知浏览器需要接收的压缩数据类型 |
Content-Length: 80 | 服务器通知浏览器需要接收的语言类型 |
Content-Language: zh-cn | 服务器通知浏览器需要接收的语言类型 |
Content-Type: text/html; charset=GBK | 服务器通知浏览器需要接收的类型和编码方式 |
Last-Modified: Tue,25 Jul 2016 20:28:50 GMT | 服务器通知浏览器浏览器访问的请求最后一次修改的时间 |
Refresh: 1; url=http://www.baidu.com | 服务器通知浏览器1秒后刷新,并且访问指定的URL页面 |
Content-Disposition: attachment; filename=aaa.zip | 服务器通知浏览器以下载方式打开资源 |
Transfer-Encoding: chunked | 服务器通知浏览器以分块方式下载文件 |
Set-Cookie: SS=QQ=5Lb nQ; path=/search | 服务器通知浏览器需要接收数据缓存到浏览器 |
Expires: -1 | a.服务器要求浏览器不要缓存来自服务器的web页面 |
Cache-Control: no-cache | b.服务器要求浏览器不要缓存来自服务器的web页面 |
Pragma: no-cache | c.服务器要求浏览器不要缓存来自服务器的web页面,三种方式都要写,不同浏览器方式不同 |
Connection: close/Keep-Alive | 服务器通知浏览器是否保持连接 |
Date: Tue,25 Jul 2016 20:28:50 GMT | 服务器通知浏览器的时间 |
响应体
请求返回的具体内容一般都会放在这里
原文:https://www.cnblogs.com/lv1up/p/11944466.html