Hypertext Transfer Protocol
或 HTTP
是一种用于传输网页及其内容(如HTML、图像、JavaScript、CSS等)的协议。HTTP用于客户机-服务器模型中,其中通信通常由客户机启动,服务器端响应客户机请求。
HTTP历史记录
HTTP是1989年由 Tim Berners-Lee
他是欧洲核子研究中心的工作人员。提议的项目名称是 World Wide Web
. Word-Wide-Web是一个可以在全球范围内共享和使用的计算机网络和资源。HTTP和HTML是万维网(简称WWW)的核心协议。HTTP是资源的传输协议,HTML是资源的格式和协议。
HTTP的第一个文档版本是1991年发布的0.9。第一个主要版本HTTP1.0是1996年发布的。HTTP1.0是在RFC 1945年正式推出的。这个版本很快就得到了web浏览器的支持。
HTTP的第二个版本编号为 HTT1.1
它为版本1.0提供了很多更新。HTTP 1.1在1997年以RFC 2068的形式提供。随着时间的推移,随着2014年新实现的需要,出现了多个RFC,如RFC 7230、RFC 7231、RFC 7232、RFC 7233、RFC 7234、RFC 7235。
HTTP 2.0
是在2015年发布的,这是一个很大的变化得到了HTTP协议。大多数主流浏览器在短时间内加入了HTTP2.0标准。http2.0协议主要基于Google的SPDY(Speedy)协议。
甚至还没有正式发布 HTTP 3.0
已经准备好了。HTTP主要是基于UDP协议的,也被称为 HTTP over QUIC
HTTP术语
在开始解释HTTP及其工作原理之前,让我们先提供一些术语及其含义。
HTML
是一种简单的文本资源识别语言。HTML使用通常在浏览器中以可视方式表示的标记。
Web Browser
是一个GUI客户端应用程序,在该应用程序中,可以使用url或网站地址启动HTTP请求,并使用JavaScript打印或执行返回的HTML响应。
相关文章: 什么是HTML5?
URL
is是一种寻址方案,其中可以寻址不同类型的资源,通常是HTTP的web页面、javascript文件、图像文件等。
JavaScript
是一种动态脚本语言,主要用于客户端,在浏览器中为给定的网页运行。
Web Server
是一个服务器端系统,它根据客户端的请求提供不同的web资源。web服务器运行守护程序以快速响应。Web浏览器与Web服务器之间的通信协议采用HTTP协议。
HTTP是如何工作的?
HTTP作为客户端和服务器端的协议,负责从Web服务器请求传输HTML、JavaScript、图像、CSS等数据。我们可以在下面一步一步地看到一个简单的HTTP会话。
- 首先,用户将URL放入web浏览器的地址栏中,然后按回车键。
- HTTP将此请求传输到Web服务器。
- web服务器将解析HTTP请求,并通过提供请求的资源来尝试实现它。
- web服务器将在以下步骤中返回HTML、JavaScript、图像、CSS和其他资源。
- web浏览器将显示并执行返回的资源,如HTML、JavaScript、Image、CSS等。
![图片[1]-什么是HTTP(超文本传输协议)?-yiteyi-C++库](https://www.yiteyi.com/wp-content/uploads/2020/03/poftut_image-130-1024x640.png)
HTTP请求
HTTP通信通过请求启动。然后对返回的响应进行解析,并根据响应的内容启动新的请求。下面是一个向poftut.com发出的HTTP请求示例。
获取/HTTP/1.1 主持人:www.poftut.com 连接:保持活动 缓存控制:最大年龄=0 升级不安全请求:1 用户代理:Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,如Gecko)铬/80.0.3987.149 Safari/537.36 Sec Fetch Dest:文档 接受:text/html、application/xhtml+xml、application/xml;q=0.9,图像/webp,图像/apng, / ;q=0.8,申请/签字交换;v=b3;q=0.9 Sec获取站点:无 秒获取模式:导航 秒获取用户:?1 接受编码:gzip、deflate、br 接受语言:en-US,en;q=0.9
相关文章: Php-语法概述
让我们检查一下这个HTTP请求。
GET / HTTP/1.1
是HTTP请求动词或方法,仅表示获取位于 /
使用http1.1协议。
Host: www.poftut.com
是我们要连接的网站、域或web服务器 www.poftut.com
User-Agent
指定web浏览器名称和版本
Accept
指定web浏览器可以接受的资源类型。
HTTP响应
HTTP Response
是根据请求返回给客户机的响应。HTTP响应通常提供一些HTML代码或图像文件或CSS代码或JavaScript代码。
HTTP/1.1 200 OK Server: nginx/1.14.0 (Ubuntu) Date: Sun, 22 Mar 2020 10:17:40 GMT Content-Type: text/html; charset=UTF-8 Transfer-Encoding: chunked Connection: keep-alive Vary: Accept-Encoding X-UA-Compatible: IE=edge Link: <https://www.poftut.com/wp-json/>; rel="https://api.w.org/" Content-Encoding: gzip
HTTP/1.1. 200 OK
表示响应协议版本为1.1,200是OK请求成功完成的HTTP状态码。
Server
是具有操作系统名称的远程服务器软件名称和版本。
Data
是创建响应的日期和时间。
Content type
是响应内容类型,在本例中为HTML,采用UTF-8编码。
HTTP谓词或请求方法
HTTP提供了一些动词或者换句话说 Request Methods
为了实现不同风格的HTTP请求。
HTTP GET
用于获取指定资源的表示形式。GET方法只用于获取远程网站内容,而不在远程网站上进行更改。
HTTP HEAD
类似于get,但只返回HTTP头或信息,不包含正文。
HTTP POST
用于将一些数据发送到远程web服务器,在该服务器中,通常客户端用户输入被发送到请求主体内的web服务器。
HTTP PUT
是一种将信息放入远程web服务器的方法。信息是通过URI或URL提供的,而不是通过正文。
相关文章: 如何在Fedora、CentOS、RHEL Linux上安装Apache2.4和PHP7.3?
HTTP DELETE
将删除在最终用户的web体验期间通常不使用的指定远程资源。
HTTP TRACE
将跟踪中间服务器之间的更改。这种方法不太流行。
HTTP OPTIONS
将返回远程服务器支持的方法。
HTTP CONNECT
will通常用于连接代理服务器和创建HTTP隧道。
HTTP PATCH
用于修补或部分修改不太流行的远程资源。
HTTP状态代码
每一个HTTP请求都返回一个调用 HTTP Status Code
. 此状态代码指定请求的完成状态,如成功、失败、服务器错误等。
信息 1XX
101、102等状态码用于向客户机提供有关请求的一些信息。
Successful 2XX
像200202这样的状态码用于提供请求成功完成的信息。
Redirection 3XX
状态码(如300、302)用于将客户机重定向到不同的URI或地址。
Client Error 4XX
像400、404这样的状态码用于通知客户机存在与请求相关的错误。
Server Error 5XX
像503这样的状态码用于通知客户机存在与服务器相关的错误,该错误阻止请求完成。
安全HTTP或HTTPS
HTTP协议是作为明文协议创建的,其中没有考虑安全性。但是随着网络安全线程的增加,HTTP协议变得非常脆弱。SSL/TLS隧道是为HTTP通信量创建的,用于加密通信量。带有SSL/TLS的HTTP称为HTTPS简单安全的HTTP。事件一个常规的HTTP流量可以被窃听和轻松读取HTTPS流量可以以一种有意义的方式读取,以获取有关流量的信息。