http与https的基本概念
什么是HTTP协议
HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准 (TCP)用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。 超文本传输协议是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。
HTTP协议一般用于B/S架构()。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
什么是HTTPS协议
HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP+SSL/TLS,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
SSL(Secure Socket Layer)安全套接字层
TLS(Transport Layer Security)传输层安全
http与https的区别
HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。
区别主要如下:
•1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。 •2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。 •3、http和https使用的是完全不同的连接方式,用的默认端口也不一样,前者是80,后者是443。 •4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证 的网络协议,比http协议安全。
请求行
请求的第一行是“方法URI协议/版本”例如:GET/sample.jsp HTTP/1.1 以上代码中“GET”代表请求方法,“/sample.jsp”表示URI,“HTTP/1.1代表协议和协议的版本。
消息抱头
请求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度等
请求正文
请求头和请求正文之间是一个空行,这个行非常重要,它表示请求头已经结束,接下来的是请求正文。请求正 文中可以包含客户提交的查询字符串信息: username=jinqiao&password=1234 在以上的例子的HTTP请求中,请求的正文只有一行内容。当然,在实际应用中,HTTP请求正文可以包含更多的内容。
状态行
HTTP-1.1 Status-Code Reason-Phrase CRLF•其中,HTTP-Version表示服务器HTTP协议的版本; Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述。 例如:HTTP/1.1 200 OK
消息报头
服务器传递给客户端用于说明服务器的一些信息,以及将来继续访问该资源时的策略。 Location:Location响应报头域用于重定向接受者到一个新的位置。 Server:Server响应报头域包含了 服务器用来处理请求的软件信息。•WWW-Authenticate:WWW-Authenticate响应报头域必须被包含在 401(未授权的)响应消息中下面是WWW-Authenticate响应报头域的一个,例子:WWW-Authenticate: Basic realm="Basic Auth Test!“ Content-Encoding:Content-Encoding实体报头域被使用作媒 体类型的修饰符. Content-Language:Content-Language实体报头域描述了资源所用的自然语言。 Content-Length: Content-Length实体报头域用于指明正文的长度. Content-Type:Content- Type实体报头域用语指明发送给接收者的实体正文的媒体类型。 Last-Modified:Last-Modified实体报 头域用于指示资源最后的修改日期及时间。 Expires: Expires实体报头域给出响应过期的日期和时间。 Expires实体报头域使用的日期和时间必须是RFC 1123中的日期格式,例如:•Expires: Thu, 15 Sep 2005 16:00:00 GMT
响应正文
是服务端返回给客户端的HTML文本内容,或者其他格式的数据,比如:视频流、图片或者音频数据。 如果请求的是HTML页面,那么返回的就是HTML代码。如果是JS就是JS代码。
响应状态码
100-199:消息状态码:表示成功接收请求,100
200-299:成功状态码:表示成功接收并完成整个处理过程,常用200成功接收
300-399:重定向状态码:比如请求的资源转移到了下个地方,302,307,304
400-499:客户端请求错误:404,403
500-599:服务器出现错误:500