首页 > 其他分享 >HTTP与HTTPS的前尘往事

HTTP与HTTPS的前尘往事

时间:2024-05-25 15:06:34浏览次数:9  
标签:协议 HTTP 请求 HTTPS 前尘往事 服务器 客户端

一、HTTP

HTTP(Hypertext Transfer Protocol,超文本传输协议)是一个简单的请求-响应协议,它通常运行在TCP之上,并指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。
工作原理
客户端发起请求:客户端(通常是Web浏览器)向服务器发送HTTP请求。请求包括请求的方法(如GET、POST等)、要访问的资源的URL地址、HTTP协议版本等信息。

服务器响应请求:服务器收到客户端的请求后,根据请求的内容进行处理,并通过TCP连接将生成的HTTP响应包发送回客户端。

特点
无连接:HTTP协议不需要在客户端和服务器之间建立持久的连接,每次请求和响应完成后连接就会关闭,这减少了网络开销。

无状态:HTTP协议对事务的处理没有记忆能力,每次请求都需要提供完整的请求信息。

面向对象:HTTP协议可以传输任何类型的数据对象,包括文本、图片、音频、视频等。

无阻塞:HTTP协议不会限制客户端的请求数量和大小,使得服务器可以处理大量的请求。

可缓存:HTTP协议允许客户端缓存服务器响应的内容,以提高响应速度和减少网络流量。

请求方法
GET:表示请求指定的页面信息,并返回实体内容。

POST:表示向指定资源提交数据,数据包含在请求头中,有可能导致新的资源建立或原有资源修改。

HEAD:类似于GET,只不过返回的响应体中没有具体内容,只有报文头,用于获取报文头。

PUT:从客户端向服务器传送的数据取代指定的内容,即向指定的位置上传最新的内容。

PATCH:对PUT方法的补充,用来对已知资源进行局部更新。

DELETE:请求服务器删除Request-URL所标识的资源。

OPTIONS:返回服务器针对特殊资源所支持的HTML请求方式或允许客户端查看服务器的性能。

HTTP状态码
HTTP状态码是用以表示网页服务器超文本传输协议响应状态的3位数字代码。它由RFC 2616规范定义,并得到其他相关规范的扩展。所有状态码的第一个数字代表了响应的五种状态之一,包括消息、成功、重定向、客户端错误和服务器错误。

1xx(信息性状态码):表示请求已经接收,继续处理。常见的状态码有:100 Continue:客户端应当继续发送请求。这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝。 101 Switching Protocols:服务器已经理解了客户端的请求,并将通过Upgrade消息头通知客户端采用不同的协议来完成这个请求。 102 Processing:由WebDAV(RFC 2518)扩展的状态码,代表处理将被继续执行。

2xx(成功状态码):表示请求已经被成功接收、理解、并处理。常见的状态码有:200 OK:请求已成功,请求所希望的响应头或数据体将随此响应返回。 201 Created:请求已经被实现,而且有一个新的资源已经依据请求的需要而建立,且其URI已经随Location头信息返回。 202 Accepted:服务器已接受请求,但尚未处理。

3xx(重定向状态码):表示请求需要进一步操作,以完成请求。常见的状态码有:301 Moved Permanently:请求的网页已永久移动到新位置。 302 Found:临时移动。 303 See Other:建议客户访问其他URL或访问方式。 304 Not Modified:自从上次请求后,请求的网页未修改过。

4xx(客户端错误状态码):表示客户端的请求有问题。常见的状态码有:400 Bad Request:服务器无法理解请求的格式,客户端不应当尝试再次使用相同的内容发起请求。 404 Not Found:服务器无法根据客户端的请求找到资源(网页)。

5xx(服务器错误状态码):表示服务器处理请求时出现了错误。常见的状态码有:500 Internal Server Error:服务器遇到了一个未曾预料的情况,导致了它无法完成对请求的处理。 503 Service Unavailable:由于临时的服务器维护或者过载,服务器当前无法处理请求。

应用场景
Web应用:HTTP最广泛的应用就是Web应用程序。无论是桌面端的浏览器还是移动端的应用程序,HTTP都是数据的传输协议。HTTP通过传输HTML、CSS、JavaScript等静态资源文件和API接口等动态资源文件,提供支撑服务器响应用户请求的基础。

物联网:物联网应用中的传感器和设备可以通过HTTP协议与云服务器进行数据交互。

移动应用:HTTP协议在移动应用程序中也扮演着重要的角色。移动应用通常都需要与服务器进行数据交互,比如获取社交网络应用的最新动态,或者是获得在线商城的商品信息。

二、HTTPS

HTTPS(全称:Hypertext Transfer Protocol Secure)是一种在HTTP基础上加入了安全层(SSL/TLS)的协议,它主要用于在安全的通信通道上传输数据。
工作原理
HTTPS在HTTP的基础上,通过传输加密和身份认证保证了传输过程的安全性。具体来说,HTTPS在HTTP与TCP之间加入了一个加密/身份验证层(SSL或TLS),这个系统提供了身份验证与加密通讯方法。

当客户端(如Web浏览器)与服务器建立连接时,会进行SSL/TLS握手,以协商加密算法、交换密钥等。然后,客户端和服务器之间的通信数据都会被加密传输,确保数据的安全性和完整性。

特点
安全性:通过SSL/TLS协议对数据进行加密和身份验证,确保数据在传输过程中的保密性和完整性。加密保护了敏感数据的机密性,防止被第三方截获和窃取;身份验证防止了中间人攻击,确保了通信双方的身份可信。

可信性:HTTPS使用证书来验证服务器的身份。证书由可信任的证书颁发机构(CA)签发,包含了服务器的公钥和颁发机构的数字签名。客户端在与服务器建立连接时会验证证书的真实性和合法性,确保通信双方的身份可信。

SEO优化:搜索引擎将HTTPS作为网站排名的一个重要指标。使用HTTPS可以提高网站在搜索引擎中的排名,增加网站的曝光度和流量。

安全的Cookie传输:在HTTPS连接中,所有的Cookie都会通过加密的方式传输,防止被窃取和篡改。这对于保护用户的登录凭据和敏感信息非常重要。

用户信任度提升:使用HTTPS协议可以提升用户对网站的信任度。用户可以通过浏览器地址栏中的HTTPS安全锁或绿色地址栏来识别网站是否使用了HTTPS。

应用场景
在线购物:用户在购物网站上输入银行卡号、密码等敏感信息时,HTTPS可以确保这些信息的安全传输,防止被黑客窃取。

网上银行:网上银行涉及到用户的账户信息和资金安全,因此必须使用HTTPS协议来保护用户的敏感信息。

登录和注册页面:对于任何需要用户登录的网站,都需要通过HTTPS来保护用户输入的用户名和密码等敏感信息。

邮件系统:电子邮件可以包含私人和机密信息,因此也需要加密传输。使用HTTPS可以确保邮件得到加密,并且只能被预定的收件人读取。

三、HTTP与HTTPS的关系

HTTP(Hypertext Transfer Protocol)和HTTPS(Hypertext Transfer Protocol Secure)是用于在Web上传输数据的两种协议。
安全性
HTTP:是一个非安全的协议,这意味着在HTTP上传输的数据(如网页内容、用户凭证等)是以明文形式发送的,因此容易受到中间人攻击(Man-in-the-Middle Attack, MITM)。 HTTPS:是一个安全的协议,它在HTTP的基础上增加了一层安全层(通常是通过SSL/TLS协议实现的)。这意味着在HTTPS上传输的数据是加密的,从而提供了数据完整性和身份认证。

端口号
HTTP:通常使用80端口进行通信。

HTTPS:通常使用443端口进行通信。

证书和密钥
HTTPS要求服务器拥有一个由受信任的证书颁发机构(Certificate Authority, CA)颁发的SSL证书。这个证书包含了服务器的公钥和一些其他信息,用于在客户端和服务器之间建立安全的加密连接。

客户端和服务器使用公钥和私钥对进行加密和解密操作,确保数据在传输过程中的安全性。

握手过程
当客户端尝试通过HTTPS与服务器建立连接时,会经历一个称为“握手”的过程。在这个过程中,客户端和服务器会交换信息以验证对方的身份,并协商用于加密通信的加密算法和密钥。

性能
由于HTTPS需要进行额外的加密和解密操作,以及证书验证等步骤,因此相对于HTTP来说,HTTPS的性能通常会稍差一些。然而,随着硬件和软件的不断优化,HTTPS的性能差距正在逐渐缩小。

使用场景
HTTP通常用于不需要加密传输的场景,如静态资源的下载、非敏感数据的传输等。 HTTPS则广泛用于需要保护数据完整性和隐私性的场景,如在线银行、电子商务、登录页面等。

搜索引擎优化(SEO)
使用HTTPS的网站在搜索引擎排名中可能会获得一些优势。Google等搜索引擎已经将HTTPS视为排名因素之一,并鼓励网站使用HTTPS来提高安全性。
在这里插入图片描述

标签:协议,HTTP,请求,HTTPS,前尘往事,服务器,客户端
From: https://blog.csdn.net/heikewhite/article/details/139066928

相关文章

  • Golang:使用go-resty/resty发送http请求get和post
    Golang:使用go-resty/resty发送http请求get和post原创 吃个大西瓜 CodingBigTree 2024-05-2508:00 北京 听全文 go-resty/resty是一个简单的HTTP和REST客户端,受到Rubyrest-client的启发文档https://github.com/go-resty/resty/安装go get github......
  • Django视图层——2HttpReqeust对象&QueryDict对象
    HttpReqeust对象服务器接收到http协议的请求后,会根据报文创建HttpRequest对象视图函数的第一个参数是HttpRequest对象在django.http模块中定义了HttpRequest对象的API属性下面除非特别说明,属性都是只读的path:一个字符串,表示请求的页面的完整路径,不包含域名method:......
  • HTTP基本原理
    HTTP基本原理URI和URLURI全程UniformResourceIdentifier即统一资源标志符。URL全程``UniformResourceLocator`即统一资源定位符。举例来讲https://github.com/favicon.ico,既是一个URI又是一个URL。favicon.ico这样一个图标资源,我们用上一行中的URI/URL指定了访问它的唯......
  • php$GLOBALS['HTTP_RAW_POST_DATA']报错一例
    下载下来的代码提示HTTP_RAW_POST_DATA已经废弃,不再支持,这个报错又引起header(因为用了session)之前输出信息报错。查半天查不到原因。我找了php5.6不支持HTTP_RAW_POST_DATA,不知道php7,php8更会报什么错呢开始以为某php文件,引用了HTTP_RAW_POST_DATA,引起的,不是的,访问任意文件都报......
  • 配置Ingress支持HTTPS访问(二):使用cert-manager申请证书
    目录一.系统环境二.前言三.Let'sEncrypt和cert-manager简介四.部署cert-manager4.1安装cert-manager4.2创建clusterissuer4.3申请域名4.4Cloudflare添加站点4.5修改阿里云的名称服务器为cloudflare名称服务器4.6获取APITokens4.7创建secret存储APItoken4.8配置clusteri......
  • httpretty,一个Mock Http请求的库
    介绍:HTTPretty是一个用于在测试环境中模拟HTTP请求和响应。允许开发者在不实际进行网络调用的情况下,完全控制HTTP交互。通过拦截网络请求并提供预定义的响应。使用HTTPretty,开发者可以模拟各种网络条件,如延迟、错误和超时。安装pipinstallhttpretty使用HTTPretty模......
  • https免费证书申请和安装教程
    免费的SSL证书也是可以实现https,下面是免费证书的申请和安装教程(不限制申请数量)1访问CA创建账号登录JoySSL官网,创建一个证书管理账号,在注册账号时填写注册码230916可以获取不限量领取和技术支持权限,建议填写。免费SSL证书申请网址链接https://www.joyssl.com/certificat......
  • 使用 PHP cURL 实现 HTTP 请求类
    类结构创建一个HttpRequest类,其中包括初始化cURL的方法、不同类型的HTTP请求方法,以及一些用于处理响应头和解析响应内容的辅助方法。初始化cURL首先,创建一个私有方法initCurl,用于初始化cURL句柄并设置一些常用的选项。classHttpRequest{privatefunctionini......
  • git之fatal: unable to access ‘https://11.2.7.8:68/mjgn/mj.git/‘: SSL certifica
    MENU前言方法一方法二方法三方法四结束语前言出现这个错误是因为Git在访问仓库时遇到了SSL证书问题,具体是证书的密钥太弱,不符合安全要求。方法一升级或更换SSL证书联系服务器管理员,确保服务器上使用的是强密钥SSL证书。推荐使用至少2048位的密钥。方法二......
  • 网络设置 —— Http 响应头和请求头的设置
     get请求可以使用GetAsync方法      Post请求使用PostAsync,      delete请求使用DeleteAsync      Put请求使用PutAsync      请求的完整写法HttpResponseMessageres=awaitnewHttpClient().SendAsync(reg);str......