- HTTP协议是什么?
协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的法定活规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言文档从web服务器传送到客户端的浏览器。
目前我们使用的是HTTP/1.1版本
2. HTTP协议的特点
- 支持客户端/服务器模式
- 无状态,此处的无状态是指对事务无记忆能力,如果后续需要这些信息,那么需要重新传递获取数据。
- 简单快速,客户端只需要发送请求方法和路径到服务端,请求方式有 get,post,head,put,delete,options,trace,关于此处的解释移步此处.
- 无连接,指每次处理只限制处理一个连接.服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
- 灵活,HTTP请求允许发送任意类型的数据。当前请求类型可以查看Content-Type
主要是URL 和 HTTP请求 HTTP响应 三个部分
- URL篇
URL(uniform resource locator)地址用于描述一个网络上的资源,基本格式如下
schema://host[ports#]/path/.../[?query string][#author]
scheme 指定底层使用的协议(例如:http,https,ftp)
host HTTP服务器的IP地址或者域名
port# HTTP服务的默认端口是80,这种情况下端口号可以省略。如果使用了别的端口,必须指明,例如http://www.cnblogs.com:8080
path 访问资源的路径
query-string 发送给http服务器的数据
anchor 锚
- HTTP请求响应篇
headers
- general
Remote Address:最终请求服务器地址
Request URL:请求完整的路径
Request Method:请求类型,常用的(get,post等)
Status Code:请求状态码
状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值: 1xx:指示信息--表示请求已接收,继续处理 2xx:成功--表示请求已被成功接收、理解、接受 3xx:重定向--要完成请求必须进行更进一步的操作 4xx:客户端错误--请求有语法错误或请求无法实现 5xx:服务器端错误--服务器未能实现合法的请求 常见状态代码、状态描述、说明: 200 OK //客户端请求成功 400 Bad Request //客户端请求有语法错误,不能被服务器所理解 401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用 403 Forbidden //服务器收到请求,但是拒绝提供服务 404 Not Found //请求资源不存在,eg:输入了错误的URL 500 Internal Server Error //服务器发生不可预期的错误 503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
2. Request Headers
- Accept:指定客户端能够接收的内容类型,内容类型中的先后次序表示客户端接收的先后次序。
- Accept-Encoding:指定客户端浏览器可以支持的web服务器返回内容压缩编码类型。表示允许服务器在将输出内容发送到客户端以前进行压缩,以节约带宽。而这里设置的就是客户端浏览器所能够支持的返回压缩格式。
- Accept-Language:指定HTTP客户端浏览器用来展示返回信息所优先选择的语言(zh-cn,zh;q=0.5这里默认为中文。)
- Cache-Control:Cache -Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置 Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache、no-store、max-age、 max-stale、min-fresh、only-if-cached,响应消息中的指令包括public、private、no-cache、no- store、no-transform、must-revalidate、proxy-revalidate、max-age。各个消息中的指令含义如 下:
Public指示响应可被任何缓存区缓存。 Private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。 no-cache指示请求或响应消息不能缓存 no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。 max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。 min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。 max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。
- Connection :表示是否需要持久连接。如果web服务器端看到这里的值为“Keep-Alive”,或者看到请求使用的是HTTP 1.1(HTTP 1.1默认进行持久连接),它就可以利用持久连接的优点,当页面包含多个元素时(例如Applet,图片),显著地减少下载所需要的时间。要实现这一点, web服务器需要在返回给客户端HTTP头信息中发送一个Content-Length(返回信息正文的长度)头,最简单的实现方法是:先把内容写入ByteArrayOutputStream,然 后在正式写出内容之前计算它的大小。
- Cookie: HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器。
- Host:请求的web服务器域名地址
- Origin:请求来源
- Pragma:Pragma头域用来包含实现特定的指令,最常用的是Pragma:no-cache。在HTTP/1.1协议中,它的含义和Cache- Control:no-cache相同。
- Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面
- User-Agent:HTTP客户端运行的浏览器类型的详细信息。通过该头部信息,web服务器可以判断到当前HTTP请求的客户端浏览器类别。
Response Headers
- Access-Control-Allow-Credentials:允许跨域
- Access-Control-Allow-Headers:表示服务器接受自定义请求头,设置浏览器允许访问的服务器的头信息的白名单:
- Access-Control-Allow-Origin:origin参数指定一个允许向该服务器提交请求的URI.对于一个不带有credentials的请求,可以指定为'*',表示允许来自所有域的请求.
- X-Powered-By:web应用框架信息
- Server:web服务器的版本。通常我们会看到 “Microsoft-IIS/7.5”, “nginx/1.0.11” 和 “Apache”这样的字段。