HTTP与HTTPS

安全问题

超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号、密码等支付信息

为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密

HTTP

HTTP是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少

HTTP/1.0和HTTP/1.1的区别

HTTP协议老的标准是HTTP/1.0,目前最通用的标准是HTTP/1.1

HTTP1.0只保持了短暂的连接,浏览器每次请求都需要与服务器建立一个TCP连接,但最新的HTTP/1.1加入了长连接,只需要客户端给服务器发送的HTTP报文头部加入Connection: keep-alive即可,HTTP/1.1支持持久连接,默认进行持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟

HTTPS

HTTP与HTTPS的区别-马海祥博客

流程如下:

  • 客户使用HTTPS的URL访问Web服务器,要求与Web服务器建立SSL连接
  • Web服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端
  • 客户端的浏览器与Web服务器协商SSL连接的安全等级,也就是信息加密的等级
  • 客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话加密,并传送给网站
  • Web服务器利用自己的私钥解密出会话密钥
  • Web服务器利用会话密钥加密与客户端之间的通信

HTTP的请求方法

HTTP的请求方法包括GETPOSTPUTDELETE四种基本方法

GET POST
不会修改服务器上的资源,无副作用 可能会修改服务器上的资源,有副作用
可以保存为书签,可以用缓存优化
把参数附在URL上 把参数附在HTTP包的包体中
浏览器和服务器一般对GET方法提交的ULR长度有限制,一般是1K或者2K 浏览器和服务器对POST方法所传递的参数限制为80K到4M不等
GET的参数一般只支持ASCII 可以传输二进制编码信息

HTTP状态码

状态码 英文名称 描述
200 OK 请求成功,一般用于GET和POST请求
204 No Content 无内容,服务器处理成功,但未返回内容
206 Partial Content 对资源的一部分的请求成功
301 Moved Permanently 请求的资源已经被永久移动到新的URI,返回的信息包括新的URI,浏览器会自动定向到新的URI,今后任何新的请求都会用新的URI代替
302 Found 临时重定向
304 Not Modified
307 Temporary Redirect
400 Bad Request
401 Unauthorized
402 Payment Required
403 Forbidden
404 Not Found 找不到资源
500 Internal Server Error 服务器内部错误,无法完成请求
501 Not Implemented 不支持请求的功能
503 Service Unavailable 由于超载或者系统维护,服务器暂时无法处理客户端的请求