Cookie
:最常用的请求头,浏览器每次都会将
cookie
发送到服务器上,允许服务器在客户端存储少量数据。
Connection:连接状态
Upgrade-Insecure-Requests:安全升级,表示之后的请求都会通过https进行(我的理解)
3>> 最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头。
4>> 请求数据不在GET方法中使用,而是在POST方法中使用。POST方法适用于需要客户填写表单的场合。与请求数据相关的最常使用的请求头是Content-Type和Content-Length。
Content-Type:WEB服务器告诉浏览器自己响应的对象的类型和字符集。例如:Content-Type: text/html; charset='gb2312'
Content-Length:表示请求消息正文的长度。
4.HTTP响应报文
1>状态行
2>响应头部
3>响应正文
1>> 状态行:
状态行由3部分组成,分别为:协议版本,状态码,状态码描述,他们之间由空格分隔。
状态码有:
100——客户必须继续发出请求
101——客户要求服务器根据请求转换HTTP协议版本
200——交易成功
201——提示知道新文件的URL
202——接受和处理、但处理未完成
203——返回信息不确定或不完整
204——请求收到,但返回信息为空
205——服务器完成了请求,用户代理必须复位当前已经浏览过的文件
206——服务器已经完成了部分用户的GET请求
300——请求的资源可在多处得到
301——删除请求数据
302——在其他地址发现了请求数据
303——建议客户访问其他URL或访问方式
304——客户端已经执行了GET,但文件未变化
305——请求的资源必须从服务器指定的地址得到
306——前一版本HTTP中使用的代码,现行版本中不再使用
307——申明请求的资源临时性删除
400——错误请求,如语法错误
401——未授权
HTTP 401.1 - 未授权:登录失败
HTTP 401.2 - 未授权:服务器配置问题导致登录失败
HTTP 401.3 - ACL 禁止访问资源
HTTP 401.4 - 未授权:授权被筛选器拒绝
HTTP 401.5 - 未授权:ISAPI 或 CGI 授权失败
402——保留有效ChargeTo头响应
403——禁止访问
HTTP 403.1 禁止访问:禁止可执行访问
HTTP 403.2 - 禁止访问:禁止读访问
HTTP 403.3 - 禁止访问:禁止写访问
HTTP 403.4 - 禁止访问:要求 SSL
HTTP 403.5 - 禁止访问:要求 SSL 128
HTTP 403.6 - 禁止访问:IP 地址被拒绝
HTTP 403.7 - 禁止访问:要求客户证书
HTTP 403.8 - 禁止访问:禁止站点访问
HTTP 403.9 - 禁止访问:连接的用户过多
HTTP 403.10 - 禁止访问:配置无效
HTTP 403.11 - 禁止访问:密码更改
HTTP 403.12 - 禁止访问:映射器拒绝访问
HTTP 403.13 - 禁止访问:客户证书已被吊销
HTTP 403.15 - 禁止访问:客户访问许可过多
HTTP 403.16 - 禁止访问:客户证书不可信或者无效
HTTP 403.17 - 禁止访问:客户证书已经到期或者尚未生效
404——没有发现文件、查询或URl
405——用户在Request-Line字段定义的方法不允许
406——根据用户发送的Accept拖,请求资源不可访问
407——类似401,用户必须首先在代理服务器上得到授权
408——客户端没有在用户指定的饿时间内完成请求
409——对当前资源状态,请求不能完成
410——服务器上不再有此资源且无进一步的参考地址
411——服务器拒绝用户定义的Content-Length属性请求
412——一个或多个请求头字段在当前请求中错误
413——请求的资源大于服务器允许的大小
414——请求的资源URL长于服务器允许的长度
415——请求资源不支持请求项目格式
416——请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,请求也不包含If-Range请求头字段
417——服务器不满足请求Expect头字段指定的期望值,如果是代理服务器,可能是下一级服务器不能满足请求长。
HTTP 500 - 内部服务器错误
HTTP 500.100 - 内部服务器错误 - ASP 错误
HTTP 500-11 服务器关闭
HTTP 500-12 应用程序重新启动
HTTP 500-13 - 服务器太忙
HTTP 500-14 - 应用程序无效
HTTP 500-15 - 不允许请求 global.asa
Error 501 - 未实现
HTTP 502 - 网关错误
2>>响应头
(火狐开发者模式可查看 : 开发者模式-网络)
BDPAGETYPE
BDQID
BDUSERID
Cache-Control:告诉所有的缓存机制是否可以缓存及哪种类型
Connection:表示是否需要持续连接
Content-Encoding:web服务器支持的返回内容压缩编码
Content-Type:响应正文类型
Cxy_all
Date:请求发送的
Expires:响应过期的日期和时间
P3p
Server:web服务器软件名称
Set-Cookie:设置Http Cookie
Transfer-Encoding:文件传输编码
Vary:告诉下游代理是使用缓存响应还是从原始服务器请求
X-Powered-By
X-UA-Compatible
strict-transport-security
其他常见响应头:
Allow:服务器支持哪些请求方法
Content-Length:表示内容长度。只有当浏览器使用持久HTTP连接时才需要这个数据。如果你想要利用持久连接的优势,可以把输出文档写入ByteArrayOutputStram,完成后查看其大小,然后把该值放入Content-Length头,最后通过byteArrayStream.writeTo(response.getOutputStream()发送内容
Last-Modified:文档的最后改动时间。客户可以通过If-Modified-Since请求头提供一个日期,该请求将被视为一个条件GET,只有改动时间迟于指定时间的文档才会返回,否则返回一个304(Not Modified)状态。Last-Modified也可用setDateHeader方法来设置
Refresh:表示浏览器应该在多少时间之后刷新文档,以秒计。
Location:表示客户应当到哪里去提取文档。Location通常不是直接设置的,而是通过HttpServletResponse的sendRedirect方法,该方法同时设置状态代码为302;
3>>响应正文
响应正文:服务器返回给客户端的文本信息
5.HTTP工作原理
HTTP 协议采用请求/响应模型。客户端向服务器发送一个请求报文,服务器以一个状态作为响应。
1>以下是 HTTP 请求/响应的步骤:
1>>客户端连接到web服务器:HTTP 客户端与web服务器建立一个 TCP 连接;
2>>客户端向服务器发起 HTTP 请求:通过已建立的TCP 连接,客 户端向服务器发送一个请求报文;
3>>服务器接收 HTTP 请求并返回 HTTP 响应:服务器解析请求,定位请求资源,服务器将资源副本写到 TCP 连接,由客户端读取;
4>>释放 TCP 连接:若connection 模式为close,则服务器主动 关闭TCP 连接,客户端被动关闭连接,释放TCP 连接;若
connection 模式为keepalive,则该连接会保持一段时间,在该 时间内可以继续接收请求;
5>>客户端浏览器解析HTML内容:客户端将服务器响应的 html 文 本解析并显示;
2>例如:在浏览器地址栏键入URL,按下回车之后会经历以下 流程:
1>>浏览器向 DNS 服务器请求解析该 URL 中的域名所对应 的 IP 地址;
2>>解析出 IP 地址后,根据该 IP 地址和默认端口 80或443,和服务器建立 TCP 连接;
3>>浏览器发出读取文件(URL 中域名后面部分对应的文件) 的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;(若在https下会有12个包,SSL握手有8个包)
4>>服务器对浏览器请求作出响应,并把对应的 html 文本 发送给浏览器;
5>>释放 TCP 连接;
6>>浏览器将该 html 文本并显示内容;
6.HTTP无状态解决方法——Cookie/Session简单了解
在程序中,会话跟踪是很重要的事情。 而Web应用程序是使用HTTP协议传输数据的。HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。
Cookie就是这样的一种机制。它可以弥补HTTP协议无状态的不足。在Session出现之前,基本上所有的网站都采用Cookie来跟踪会话。
1>cookie
1>>是什么,原理
由于HTTP是一种无状态的协议,服务器单从网络连接上无从知道客户身份。于是给每个客户端颁发一个通行证,无论谁访问都必须携带自己通行证,这样服务器就能从通行证上确认客户身份了。这就是Cookie的工作原理。Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。
2>> 查看某个网站颁发的Cookie
在浏览器地址栏输入JavaScript:alert (document. cookie)就可以了
除了使用Cookie,Web应用程序中还经常使用Session来记录客户端状态。Session是服务器端使用的一种记录客户端状态的机制,使用上比Cookie简单一些,相应的也增加了服务器的存储压力。
2>session
1>>是什么,原理
Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。如同服务器端的档案。
7.HTTP缓存机制
WEB缓存(cache)位于Web服务器和客户端之间。
缓存会根据请求保存输出内容的副本,例如html页面,图片,文件。当下一个请求来到的时候:如果是相同的URL,缓存直接使用副本响应访问请求,而不是向源服务器再次发送请求。一方面减少了延迟,另一方面也减少了带宽的消耗。
HTTP协议定义了相关的消息头来使WEB缓存尽可能好的工作。
HTTP/1.1中缓存的目的是为了在很多情况下减少发送请求,同时在许多情况下可以不需要发送完整响应。减少发送请求就减少了网络回路的数量;HTTP利用一个“过期(expiration)”机制来达到此目的。后者减少了网络应用的带宽;HTTP用“验证(validation)”机制来达到此目的。
HTTP定义了3种缓存机制
1> Freshness:允许一个回应消息可以在源服务器不被重新检查,并且可以由服务器和客户端来控制。
2> Validation:用来检查以一个缓存的回应是否仍然可用。
3> Invalidation: 在另一个请求通过缓存的时候,常常有一个副作用。
8.HTTP代理
代理服务器Proxy Server,类似网络信息中转站,是介于浏览器和Web服务器i之间的一台服务器。浏览器向代理服务器发送请求,代理服务器接收请求,再按要求获取信息,然后再将取得的信息传送给浏览器。
代理服务器一般都具有缓冲功能,可以不断的将心取得的数据存储在本机上,如果浏览器所请求的数据在代理服务器上已经存在,就不用从web服务器取取数据,直接将存储器上的数据传送给用户的浏览器。
参考资料:深入理解HTTP协议(转) 作者:苏勇的blog
Cookie/Session机制详解 作者fangaoxin
HTTP协议详解 Athour:Jeffrey
HTTP必知必会——常见面试题总结 HTTP 1.1与HTTP 1.0的比较 (转) 作者:elifefly
HTTP请求报文和HTTP响应报文 作者:zhangliang_571