10.1 http与https
10.1.1 什么是超文本
1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。
超文本是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本。超文本更是一种用户界面范式,用以显示文本及与文本之间相关的内容。现时超文本普遍以电子文档方式存在,其中的文字包含有可以链结到其他位置或者文档的连结,允许从当前阅读位置直接切换到超文本连结所指向的位置。
10.1.2 http协议
HTTP(HyperText Transport Protocol)是超文本传输协议的缩写,它用于传送WWW方式的数据。
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的
是为了提供一种发布和接收HTML页面的方法。
10.1.3 http与https基本概念
HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL(Secure Sockets Layer)层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。
10.1.4 http与https的区别
简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。区别主要如下:
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的默认端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
10.2 http请求的组成
从客户端到服务器端的请求消息,信息由4部分组成请求行、消息报头、空行、请求正文
10.2.1 请求行(请求方法URI协议/版本)
请求的第一行是“方法URI协议/版本”例如:GET/sample.jsp HTTP/1.1
以上代码中“GET”代表请求方法,“/sample.jsp”表示URI,“HTTP/1.1代表协议和协议的版本。
10.2.2 消息报头(请求头Request Header)
请求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度等。例如:
Accept:image/gif.image/jpeg./(请求的图片内容格式)
Accept-Language:zh-cn(zh-CN 是表示中文,fr-FR 是表示法语。 这是RFC1766定义的语言表示方式)
Connection:Keep-Alive(又称持久连接、连接重用,Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。)
Host:localhost(主机名字)
User-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)(客户端身份信息)
Accept-Encoding:gzip,deflate( 以压缩格式接收请求数据)
10.2.3 空行
必须有,发送回车符和换行符,通知服务器以下不再有请求头
10.2.4 请求正文(body)
请求头和请求正文之间是一个空行,这个行非常重要,它表示请求头已经结束,接下来的是请求正文。请求正文中可以包含客户提交的查询字符串信息:
username=jinqiao&password=1234
在以上的例子的HTTP请求中,请求的正文只有一行内容。当然,在实际应用中,HTTP请求正文可以包含更多的内容。
案例
10.4 请求方法
10.5 http响应格式
从服务器端到客户器端的响应信息,信息由4部分组成:状态行、消息报头、空行、响应正文。
10.5.1 状态行
HTTP-1.1 Status-Code Reason-Phrase CRLF其中,HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述。
例如:HTTP/1.1 200 OK \r\n
状态码
当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。
HTTP状态码的英文为HTTP Status Code。
下面是常见的HTTP状态码:
HTTP状态码分类
HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型:
HTTP状态码列表:
10.5.3 响应正文
服务端返回给客户端的HTML文本内容,或者其他格式的数据,比如:视频流、图片或者音频数据。
如果请求的是HTML页面,那么返回的就是HTML代码。如果是JS就是JS代码。
10.4 http协议的各版本
HTTP/1.1与HTTP/1.0的区别
1、persistent connection(持久连接)
HTTP/1.0中,每对请求/ 响应都使用一个新的连接。
HTTP/1.1则支持持久连接(默认)。
2、Host域
HTTP/1.1在请求消息头多一个Host域;HTTP/1.0 则没有这个域,建立TCP连接的时候已经指定了IP地址,而且默认一个IP地址只对应一个主机名,IP地址上只有一个host。
3、.带宽优化
HTTP/1.1加入了一个新的状态码100(Continue)。客户端事先发送一个只带头域的请求,如果服务器因为权限拒绝了请求,就回送响应码 401(Unauthorized)
4、请求方法和状态码
HTTP1.1增加了OPTIONS, PUT, DELETE, TRACE, CONNECT这些Request方法。
在HTTP/1.1中新增了24个状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。