赞
踩
目录
2. 2xx(成功):请求已成功被服务器接收、理解、并接受。
3. 3xx(重定向):需要客户端采取进一步的操作才能完成请求。
4. 4xx(客户端错误):客户端可能发生了错误,无法完成请求。
5. 5xx(服务器错误):服务器在尝试处理请求时发生错误。
版权所有,翻印必究。
All rights reserved; those responsible for unauthorized reproduction will be prosecuted。
HTTPS(全称:HyperText Transfer Protocol over Secure Socket Layer)是一个安全的HTTP数据传输协议。它实际上是在HTTP下加入了SSL层。HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
HTTPS相比HTTP多了一层SSL/TLS。SSL(Secure Socket Layer,安全套接字层)是1994年由Netscape所研发的,SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。TLS(Transport Layer Security,传输层安全)其前身是SSL,它最初的几个版本(SSL 1.0、SSL 2.0、SSL 3.0)由网景公司开发,1999年从3.1开始被IETF标准化并改名,发展至今已经有TLS 1.0、TLS 1.1、TLS 1.2三个版本。SSL3.0和TLS1.0由于存在安全漏洞,已经很少被使用到。TLS 1.3改动会比较大,目前还在草案阶段,目前使用最广泛的是TLS 1.1、TLS 1.2。
HTTPS通信主要包括几个节点,发起请求、验证身份、协商秘钥、加密会话。具体流程如下(此例子只有客户端对服务端的单向验证):
1. 客户端向服务端发起建立https请求。
2. 服务器向客户端发送数字证书。
HTTPS的目标是为了保证数据安全。近几年,Google、Baidu、Facebook等这样的互联网巨头,不谋而合地开始大力推行HTTPS,国内外的大型互联网公司很多也都已经启用了全站HTTPS,这也是未来互联网发展的趋势。为鼓励全球网站的HTTPS实现,一些互联网公司都提出了自己的要求:
1. Google已调整搜索引擎算法,让采用HTTPS的网站在搜索中排名更靠前;
2. 从2017年开始,Chrome浏览器已把采用HTTP协议的网站标记为不安全网站;
3. 苹果要求2017年App Store中的所有应用都必须使用HTTPS加密连接;
4. 当前国内炒的很火热的微信小程序也要求必须使用HTTPS协议;
5. 新一代的HTTP/2协议的支持需以HTTPS为基础。
HTTP消息是服务器和客户端之间交换数据的方式。有两种类型的消息:请求(request)和响应(response)。
HTTP请求方法是HTTP协议中定义的一种操作资源的方式。HTTP1.0定义了三种请求方法:GET, POST 和 HEAD方法。HTTP1.1新增了五种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT方法。以下是这些方法的详细解释:
请求指定的页面信息,并返回实体主体。这是最常用的方法,用于请求服务器发送某个资源。
类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头。这个方法可以在不必传输整个资源的情况下,就可以获取包含在响应消息头中的元信息。
向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。这个方法用于向服务器提交数据。
从客户端向服务器传送的数据取代指定的文档的内容。这个方法用于更新资源。
请求服务器删除指定的页面。这个方法用于删除资源。
HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。这个方法主要用于SSL隧道通信。
允许客户端查看服务器的性能¹。这个方法用于获取目标资源所支持的通信选项。
回显服务器收到的请求,主要用于测试或诊断。这个方法用于回显服务器收到的请求,这样客户端可以看到在服务器端被接收的请求的内容。
是对PUT方法的补充,用来对已知资源进行局部更新。这个方法用于对资源进行部分修改。
当您编写 HTTP 程序时,通常需要设置和处理 HTTP 响应头信息。以下是一些常见的 HTTP 响应头字段,以及它们的作用和可能的取值:
Date: Fri, 01 Nov 2023 12:00:00 GMT
Connection: keep-alive
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Content-Type: text/html; charset=utf-8
Content-Length: 12345
Content-Encoding: gzip
Last-Modified: Tue, 31 Oct 2023 12:00:00 GMT
ETag: "abcdef"
Expires: Fri, 01 Nov 2023 12:00:00 GMT
Server: Apache/2.4.29 (Unix) OpenSSL/1.1.1
Set-Cookie: user_id=123; expires=Fri, 01 Nov 2023 12:00:00 GMT; path=/
Location: https://www.example.com/new-location
当您处理 HTTP 请求和响应时,可能会遇到不同的状态码。通常包含以下HTTP协议定义的状态码:
(其他 1xx 状态码,如 102、103,用于表示正在处理请求的中间状态,通常在长时间处理的场景中使用)
(其他 2xx 状态码,如 207、208、226,用于表示更多成功的情况)
(其他 3xx 状态码,如 307、308,用于表示其他重定向的情况)
(其他 4xx 状态码,如 421、422、423、424、425、426、428、429、431、451,用于表示更多客户端错误的情况)
HTTP/2(HTTP2)是HTTP协议的第二个主要版本,旨在改进和优化HTTP/1.1。HTTP/2由IETF(Internet Engineering Task Force)标准化,于2015年发布,它旨在提供更快的加载速度、更低的延迟和更高的效率。以下是HTTP/2的一些关键特点和解释:
1. 二进制协议:
HTTP/2 是一种二进制协议,与HTTP/1.1的文本协议不同。所有的数据在传输过程中都被转换为二进制格式,这样更加高效。
2. 多路复用(Multiplexing):
HTTP/2 支持多路复用,允许在单个连接上同时进行多个请求和响应。这消除了HTTP/1.1中的队头堵塞问题,提高了并行性,加速了页面加载速度。
3. 头部压缩:
HTTP/2 使用 HPACK 算法对请求和响应头部进行压缩,减少了传输的数据量。这有助于降低延迟和提高性能,尤其在带宽受限的网络环境中更为明显。
4. 服务器推送(Server Push):
服务器推送是HTTP/2中的一个重要功能,允许服务器在客户端请求之前主动推送相关资源。这减少了客户端需要发起的请求次数,提高了页面加载性能。
5. 流(Stream):
在HTTP/2中,一个连接可以有多个并发的双向数据流。每个流代表一个逻辑通道,可以在一个连接上同时传输多个流。这样可以更有效地利用网络资源。
6. 标头列表(Header List):
HTTP/2使用首部表(Header List)来跟踪和存储之前发送过的首部信息,以减少重复发送相同的头部。这种方式提高了效率并减少了数据传输量。
7. 升级机制:
HTTP/2通过在同一连接上升级协议来向后兼容HTTP/1.1。服务器和客户端之间可以协商使用HTTP/2,如果对方不支持,则可以回退到HTTP/1.1。
8. 安全性:
HTTP/2通常与TLS(Transport Layer Security)一起使用,以提供加密和安全性。虽然不强制要求使用TLS,但大多数实际部署都会将其作为默认选项。
HTTP/2的设计目标之一是通过改进现有的HTTP/1.1协议,提供更好的性能和用户体验。通过引入多路复用、头部压缩、服务器推送等特性,HTTP/2显著减少了页面加载时间,提高了网络性能。然而,它仍然与HTTP/1.1兼容,允许逐步采用而无需对现有的Web基础设施进行根本性改变。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。