建设银行个人网站,海口模板建站定制,晋中网站建设费用,wordpress 仿HTTP/HTTPS 简介 HTTP#xff08;Hypertext Transfer Protocol#xff0c;超文本传输协议#xff09;和 HTTPS#xff08;Hypertext Transfer Protocol Secure#xff0c;超文本传输安全协议#xff09;是用于在网络中传输信息的两种主要协议。它们定义了客户端和服务器…HTTP/HTTPS 简介 HTTPHypertext Transfer Protocol超文本传输协议和 HTTPSHypertext Transfer Protocol Secure超文本传输安全协议是用于在网络中传输信息的两种主要协议。它们定义了客户端和服务器之间如何发送请求和响应的标准。
HTTP
定义HTTP 是一种应用层协议专门用于从万维网传输超文本如 HTML 页面到客户端浏览器。
端口通常使用 80 端口。
工作方式基于请求-响应模式客户端向服务器发送请求服务器返回响应传输的数据可以是 HTML 文件、图片、查询结果等。
缺点HTTP 协议本身没有提供任何加密机制意味着传输的数据容易被窃听或篡改。
HTTPS
定义HTTPS 是 HTTP 的安全版本增加了 SSLSecure Sockets Layer或其升级版本 TLSTransport Layer Security协议以确保数据的加密传输。
端口通常使用 443 端口。
工作方式HTTPS 在 HTTP 的基础上引入 SSL/TLS 协议来加密数据确保通信的机密性、完整性和服务器身份的认证。这意味着即使数据被截取也无法被解读或篡改。
优点提供了三重安全保障
加密防止数据在传输过程中被窃听。完整性校验确保数据在传输过程中不被篡改。身份验证验证服务器的身份确保客户端连接的是合法的服务器。
HTTP 与 HTTPS 的对比
数据安全HTTP 是不安全的传输数据未加密容易被窃听。HTTPS 通过加密保护数据传输的安全性。速度HTTPS 由于使用了加密和解密机制相比 HTTP 可能稍慢但现代硬件和网络已经使这种差异微乎其微。SEO 优势搜索引擎更倾向于支持使用 HTTPS 的网站这也是大多数网站逐步向 HTTPS 过渡的原因之一。
综上HTTPS 是 HTTP 的更安全版本在现代网络中被广泛使用特别是在需要保护敏感信息的场景如电子商务和在线银行业务。
HTTP 工作原理
HTTPHypertext Transfer Protocol协议基于客户端-服务器架构工作过程通常可以分为以下几个步骤
客户端发起请求用户在浏览器中输入 URL 或点击链接客户端如浏览器向服务器发起一个 HTTP 请求。请求包含了方法如 GET、POST 等、请求的资源路径、HTTP 版本、请求头等信息。服务器处理请求服务器接收到请求后分析请求的类型和资源路径。服务器根据请求的类型如获取资源、提交表单数据等进行相应的处理例如读取文件、执行动态脚本等。服务器返回响应服务器将处理后的结果封装为 HTTP 响应消息通常包含响应状态码如 200 OK、响应头、以及响应的内容如 HTML 文件、JSON 数据、图片等并将其发送回客户端。客户端渲染页面客户端接收到服务器的响应后解析响应内容并根据响应内容渲染页面展示给用户。例如如果服务器返回的是 HTML 文件浏览器会渲染网页内容。
HTTP 的主要特点
无连接HTTP 是无连接的协议即每次客户端和服务器之间的连接只处理一个请求。处理完毕后连接会自动断开。这种设计节约了服务器的资源但每次新的请求都需要重新建立连接。为了提高效率HTTP/1.1 引入了持久连接keep-alive允许多个请求在同一连接上处理。媒体独立HTTP 是媒体独立的意味着它可以传输任何类型的数据只要客户端和服务器能够理解。通过 HTTP 头中的 Content-Type 和 Accept 字段客户端和服务器可以协商传输的数据格式。无状态HTTP 是无状态协议意味着每次请求都是独立的服务器不会记住之前的请求信息。这虽然提高了协议的简洁性但也导致每次请求时都需要重新传输相关状态信息。为了解决这一问题可以通过使用 Cookie、Session 等机制来保持状态。 HTTPS 的作用
HTTPSHypertext Transfer Protocol Secure主要用于在不安全的网络环境中创建一个安全的通信信道。其核心作用包括
数据加密HTTPS 使用 SSL/TLS 协议对传输的数据进行加密确保数据在传输过程中的机密性防止被窃听或篡改。这对于保护用户的敏感信息如密码、信用卡信息等至关重要。身份验证HTTPS 通过使用数字证书来验证网站的身份。只有获得受信任的证书颁发机构CA签发的有效证书的网站才能被认为是安全的。这意味着用户可以信任他们访问的网站是真实的而不是伪装的。数据完整性HTTPS 确保数据在传输过程中不被修改或损坏。即使数据被截取攻击者也无法更改信息而不被发现。防止中间人攻击HTTPS 通过加密和身份验证机制有效防止中间人攻击MITM即攻击者在客户端和服务器之间窃听或篡改通信。
HTTPS 的信任机制
HTTPS 的信任基于操作系统中预安装的证书颁发机构CA
浏览器实现浏览器必须正确实现 HTTPS并能处理证书的验证。受信任的 CA证书颁发机构仅信任合法网站并对其进行验证。有效的证书被访问的网站必须提供一个有效的证书该证书需由受信任的 CA 签发。大部分浏览器会对无效的证书发出警告。域名匹配证书必须正确验证被访问的网站。例如访问 https://www.example.com 时服务器必须提供签发给 www.example.com 的证书而不是其他域名的证书。 HTTP 消息结构
HTTP 是基于客户端/服务器C/S架构的无状态请求/响应协议HTTP 消息是客户端与服务器之间通信的核心它们按特定的格式进行信息交换。HTTP 消息分为两种请求消息和响应消息。 客户端请求消息结构 客户端请求消息由以下四个部分组成
1、请求行Request Line 请求行定义了请求的操作包括以下几部分
请求方法用于指定操作的类型如 GET、POST、PUT、DELETE 等。请求 URI统一资源标识符Uniform Resource Identifier标识客户端请求的资源路径如 /index.html。HTTP 版本指定使用的 HTTP 协议版本如 HTTP/1.1 或 HTTP/2。
GET /index.html HTTP/1.12、请求头Request Headers 请求头包含与客户端环境、传输数据相关的信息。常见的请求头包括
Host服务器的主机地址例如Host: www.example.com。User-Agent客户端的用户代理信息例如浏览器的类型和版本。Accept客户端支持的响应类型如 Accept: text/html。Content-Length请求体的长度如果存在请求体。Accept-Encoding客户端支持的内容编码如 gzip用于压缩。
3、空行 请求头结束后必须包含一个空行表示请求头的结束和请求体的开始。
4、请求体可选 请求体用于在某些请求方法中如 POST 和 PUT包含客户端要发送的数据例如表单数据或 JSON 数据。对于 GET 请求通常不包含请求体。
POST /submit-form HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Content-Type: application/x-www-form-urlencoded
Content-Length: 27usernamejohnpassword1234服务器响应消息结构
服务器接收客户端请求后会返回一个响应消息该消息包含以下四个部分
1、状态行Status Line 状态行定义了服务器的响应状态包括以下内容
HTTP 版本与请求中的 HTTP 版本一致。
状态码三位数字表示请求的处理结果。例如
200 OK请求成功。404 Not Found请求的资源未找到。500 Internal Server Error服务器内部错误。
状态信息对状态码的简短描述。
HTTP/1.1 200 OK2、响应头Response Headers 响应头包含与服务器、响应内容有关的元数据。常见的响应头包括
Content-Type返回内容的 MIME 类型如 text/htmlapplication/json。Content-Length响应体的长度。Server服务器的信息如 Apache/2.4.41 (Ubuntu)。Set-Cookie设置客户端的 Cookie。
3、空行 响应头结束后必须包含一个空行表示响应头的结束。
4、响应体可选 响应体包含服务器返回给客户端的实际数据例如网页的 HTML、图片、视频、JSON 数据等。对于某些状态码如 204 No Content 或 304 Not Modified响应体可以为空。
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1024
Server: Apache/2.4.41 (Ubuntu)html
body
h1Hello, World!/h1
/body
/htmlHTTP 消息的工作流程
客户端发送请求消息客户端如浏览器向服务器发送一个请求包含请求行、请求头和可选的请求体。服务器处理请求服务器根据请求行中指定的资源路径和方法进行相应的处理。服务器返回响应消息服务器处理完成后将状态行、响应头和可选的响应体打包成响应消息返回给客户端。客户端处理响应客户端接收并解析服务器返回的响应消息通常会根据响应内容渲染网页或处理数据。
重要特性
无连接每次请求处理完成后连接会被关闭除非使用了 keep-alive 头来保持连接。无状态服务器不保留请求之间的状态因此每次请求都是独立的。为了维持会话可以使用 Cookie 或 Session。
HTTP 请求方法
HTTP 请求方法定义了客户端与服务器之间的通信方式主要用于指定请求的操作类型。不同的 HTTP 方法用于处理资源的不同操作常见的 HTTP 请求方法包括
1. GET
描述从服务器获取指定资源的请求通常用于请求数据而不对数据进行任何修改。应用场景加载网页、获取图片、文件等。特点请求体为空请求参数通常包含在 URL 中。
2. POST
描述向服务器发送数据以创建新的资源。应用场景表单提交、上传文件、创建新用户等。特点请求数据包含在请求体中POST 请求不是幂等的即多次相同请求可能产生不同的结果。
3. PUT
描述向服务器发送数据以更新现有资源如果资源不存在则创建。应用场景更新用户信息、替换文件等。特点PUT 是幂等的多次相同的请求会产生相同的效果。
4. DELETE
描述从服务器删除指定资源。应用场景删除用户、文件或其他资源。特点通常不可恢复慎用。
5. PATCH
描述对资源进行部分修改。应用场景修改某些字段而不是整个资源例如更新用户的某个字段。特点只修改资源的部分数据常用于小规模更新。
6. HEAD
描述与 GET 类似但服务器只返回响应的头部信息不返回实际的数据。应用场景用于检查资源是否存在或查看资源的元数据。特点常用于优化减少带宽消耗。
7. OPTIONS
描述返回服务器支持的 HTTP 方法列表。应用场景用于检查服务器支持哪些 HTTP 方法常用于跨域资源共享CORS的预检请求。特点用于查询服务器端功能返回允许的方法。
8. TRACE
描述回显服务器收到的请求主要用于诊断网络或路径问题。应用场景调试和测试查看请求在服务器中的处理路径。特点通常被禁用防止安全漏洞。
9. CONNECT
描述用于建立与服务器的隧道常用于 HTTPS 连接。应用场景HTTPS 的 TLS/SSL 隧道建立。特点建立加密的隧道用于安全通信。
各个 HTTP 版本中的请求方法
HTTP/1.0
方法GET、POST、HEAD。特点只定义了最基本的请求方法主要用于获取资源、提交数据和获取响应头信息。
HTTP/1.1
方法GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。特点引入了更多的请求方法如 PUT、DELETE 等增加了更多控制服务器端资源的能力。
HTTP/2
方法沿用了 HTTP/1.1 的方法。特点优化了传输效率和速度引入了多路复用、头部压缩、服务器推送等新特性但请求方法与 HTTP/1.1 保持一致。
HTTP/3
方法与 HTTP/2 相同。特点基于 QUIC 协议实现使用 UDP 代替 TCP进一步提高了传输速度和可靠性。
HTTP 响应头信息
HTTP 响应头信息是服务器在响应客户端的HTTP请求时发送的一系列头字段它们提供了关于响应的附加信息和服务器的指令。
响应头信息英文响应头信息中文描述Date日期响应生成的日期和时间。例如Wed, 18 Apr 2024 12:00:00 GMTServer服务器服务器软件的名称和版本。例如Apache/2.4.1 (Unix)Content-Type内容类型响应体的媒体类型MIME类型如text/html; charsetUTF-8, application/json等。Content-Length内容长度响应体的大小单位是字节。例如3145Content-Encoding内容编码响应体的压缩编码如 gzip, deflate等。Content-Language内容语言响应体的语言。例如zh-CNContent-Location内容位置响应体的 URI。例如/index.htmlContent-Range内容范围响应体的字节范围用于分块传输。例如bytes 0-999/8000Cache-Control缓存控制控制响应的缓存行为, 如 no-cache 表示必须重新请求。Connection连接管理连接的选项如keep-alive或closekeep-alive 表示连接不会在传输后关闭。。Set-Cookie设置 Cookie设置客户端的 cookie。例如sessionIdabc123; Path/; SecureExpires过期时间响应体的过期日期和时间。例如Thu, 18 Apr 2024 12:00:00 GMTLast-Modified最后修改时间资源最后被修改的日期和时间。例如Wed, 18 Apr 2024 11:00:00 GMTETag实体标签资源的特定版本的标识符。例如33a64df551425fcc55e6Location位置用于重定向的 URI。例如/newresourcePragma实现特定的指令包含实现特定的指令如 no-cache。WWW-Authenticate认证信息认证信息通常用于HTTP认证。例如Basic realmAccess to the siteAccept-Ranges接受范围指定可接受的请求范围类型。例如bytesAge经过时间响应生成后经过的秒数从原始服务器生成到代理服务器。例如24Allow允许方法列出资源允许的 HTTP 方法 。例如GET, POSTHEAD等Vary变化告诉下游代理如何使用响应头信息来确定响应是否可以从缓存中获取。例如AcceptStrict-Transport-Security严格传输安全指示浏览器仅通过 HTTPS 与服务器通信。例如max-age31536000; includeSubDomainsX-Frame-Options框架选项控制页面是否允许在框架中显示防止点击劫持攻击。例如SAMEORIGINX-Content-Type-Options内容类型选项指示浏览器不要尝试猜测资源的 MIME 类型。例如nosniffX-XSS-ProtectionXSS保护控制浏览器的 XSS 过滤和阻断。例如1; modeblockPublic-Key-Pins公钥固定HTTP 头信息用于HTTP公共密钥固定HPKP一种安全机制用于防止中间人攻击。例如pin-sha256base64primarykey; pin-sha256base64backupkey; max-ageexpireTime
HTTP 状态码
HTTP 状态码是服务器在接收到客户端请求后用于告知请求状态的三位数代码。它们帮助客户端了解请求是否成功以及如果失败了解原因。
HTTP 状态码的英文为 HTTP Status Code。
下面是常见的 HTTP 状态码
1xx信息性状态码表示接收的请求正在处理。2xx成功状态码表示请求正常处理完毕。3xx重定向状态码需要后续操作才能完成这一请求。4xx客户端错误状态码表示请求包含语法错误或无法完成。5xx服务器错误状态码服务器在处理请求的过程中发生了错误。
HTTP 状态码分类
HTTP 状态码由三个十进制数字组成第一个十进制数字定义了状态码的类型。响应分为五类信息响应(100–199)成功响应(200–299)重定向(300–399)客户端错误(400–499)和服务器错误 (500–599)
分类分类描述1**信息服务器收到请求需要请求者继续执行操作2**成功操作被成功接收并处理3**重定向需要进一步的操作以完成请求4**客户端错误请求包含语法错误或无法完成请求5**服务器错误服务器在处理请求的过程中发生了错误
HTTP状态码列表:
状态码状态码英文名称中文描述100Continue继续。客户端应继续其请求101Switching Protocols切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议例如切换到HTTP的新版本协议200OK请求成功。一般用于GET与POST请求201Created已创建。成功请求并创建了新的资源202Accepted已接受。已经接受请求但未处理完成203Non-Authoritative Information非授权信息。请求成功。但返回的meta信息不在原始的服务器而是一个副本204No Content无内容。服务器成功处理但未返回内容。在未更新网页的情况下可确保浏览器继续显示当前文档205Reset Content重置内容。服务器处理成功用户终端例如浏览器应重置文档视图。可通过此返回码清除浏览器的表单域206Partial Content部分内容。服务器成功处理了部分GET请求300Multiple Choices多种选择。请求的资源可包括多个位置相应可返回一个资源特征与地址的列表用于用户终端例如浏览器选择301Moved Permanently永久移动。请求的资源已被永久的移动到新URI返回信息会包括新的URI浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替302Found临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI303See Other查看其它地址。与301类似。使用GET和POST请求查看304Not Modified未修改。所请求的资源未修改服务器返回此状态码时不会返回任何资源。客户端通常会缓存访问过的资源通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源305Use Proxy使用代理。所请求的资源必须通过代理访问306Unused已经被废弃的HTTP状态码307Temporary Redirect临时重定向。与302类似。使用GET请求重定向400Bad Request客户端请求的语法错误服务器无法理解401Unauthorized请求要求用户的身份认证402Payment Required保留将来使用403Forbidden服务器理解请求客户端的请求但是拒绝执行此请求404Not Found服务器无法根据客户端的请求找到资源网页。通过此代码网站设计人员可设置您所请求的资源无法找到的个性页面405Method Not Allowed客户端请求中的方法被禁止406Not Acceptable服务器无法根据客户端请求的内容特性完成请求407Proxy Authentication Required请求要求代理的身份认证与401类似但请求者应当使用代理进行授权408Request Time-out服务器等待客户端发送的请求时间过长超时409Conflict服务器完成客户端的 PUT 请求时可能返回此代码服务器处理请求时发生了冲突410Gone客户端请求的资源已经不存在。410不同于404如果资源以前有现在被永久删除了可使用410代码网站设计人员可通过301代码指定资源的新位置411Length Required服务器无法处理客户端发送的不带Content-Length的请求信息412Precondition Failed客户端请求信息的先决条件错误413Request Entity Too Large由于请求的实体过大服务器无法处理因此拒绝请求。为防止客户端的连续请求服务器可能会关闭连接。如果只是服务器暂时无法处理则会包含一个Retry-After的响应信息414Request-URI Too Large请求的URI过长URI通常为网址服务器无法处理415Unsupported Media Type服务器无法处理请求附带的媒体格式416Requested range not satisfiable客户端请求的范围无效417Expectation Failed预期失败服务器无法满足请求头中 Expect 字段指定的预期行为。418Im a teapot状态码 418 实际上是一个愚人节玩笑。它在 RFC 2324 中定义该 RFC 是一个关于超文本咖啡壶控制协议HTCPCP的笑话文件。在这个笑话中418 状态码是作为一个玩笑加入到 HTTP 协议中的。500Internal Server Error服务器内部错误无法完成请求501Not Implemented服务器不支持请求的功能无法完成请求502Bad Gateway作为网关或者代理工作的服务器尝试执行请求时从远程服务器接收到了一个无效的响应503Service Unavailable由于超载或系统维护服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中504Gateway Time-out充当网关或代理的服务器未及时从远端服务器获取请求505HTTP Version not supported服务器不支持请求的HTTP协议的版本无法完成处理
HTTP content-type
Content-Type 是 HTTP 消息头的一部分用来告诉客户端浏览器或其他客户端程序返回的数据的媒体类型和编码格式。根据这个头信息客户端可以正确地解释和显示返回的数据。
语法格式
Content-Type: text/html; charsetutf-8
Content-Type: multipart/form-data; boundarysomething
实例 常见的媒体格式类型如下
text/html HTML格式text/plain 纯文本格式text/xml XML格式image/gif gif图片格式image/jpeg jpg图片格式image/pngpng图片格式
以application开头的媒体格式类型
application/xhtmlxml XHTML格式application/xml XML数据格式application/atomxml Atom XML聚合格式application/json JSON数据格式application/pdfpdf格式application/msword Word文档格式application/octet-stream 二进制流数据如常见的文件下载application/x-www-form-urlencoded form encType””中默认的encTypeform表单数据被编码为key/value格式发送到服务器表单默认的提交数据的格式
另外一种常见的媒体格式是上传文件之时使用的
multipart/form-data 需要在表单中进行文件上传时就需要使用该格式
HTTP content-type 对照表
文件扩展名Content-Type(Mime-Type)文件扩展名Content-Type(Mime-Type).* 二进制流不知道下载文件类型application/octet-stream.tifimage/tiff.001application/x-001.301application/x-301.323text/h323.906application/x-906.907drawing/907.a11application/x-a11.acpaudio/x-mei-aac.aiapplication/postscript.aifaudio/aiff.aifcaudio/aiff.aiffaudio/aiff.anvapplication/x-anv.asatext/asa.asfvideo/x-ms-asf.asptext/asp.asxvideo/x-ms-asf.auaudio/basic.avivideo/avi.awfapplication/vnd.adobe.workflow.biztext/xml.bmpapplication/x-bmp.botapplication/x-bot.c4tapplication/x-c4t.c90application/x-c90.calapplication/x-cals.catapplication/vnd.ms-pki.seccat.cdfapplication/x-netcdf.cdrapplication/x-cdr.celapplication/x-cel.cerapplication/x-x509-ca-cert.cg4application/x-g4.cgmapplication/x-cgm.citapplication/x-cit.classjava/*.cmltext/xml.cmpapplication/x-cmp.cmxapplication/x-cmx.cotapplication/x-cot.crlapplication/pkix-crl.crtapplication/x-x509-ca-cert.csiapplication/x-csi.csstext/css.cutapplication/x-cut.dbfapplication/x-dbf.dbmapplication/x-dbm.dbxapplication/x-dbx.dcdtext/xml.dcxapplication/x-dcx.derapplication/x-x509-ca-cert.dgnapplication/x-dgn.dibapplication/x-dib.dllapplication/x-msdownload.docapplication/msword.dotapplication/msword.drwapplication/x-drw.dtdtext/xml.dwfModel/vnd.dwf.dwfapplication/x-dwf.dwgapplication/x-dwg.dxbapplication/x-dxb.dxfapplication/x-dxf.ednapplication/vnd.adobe.edn.emfapplication/x-emf.emlmessage/rfc822.enttext/xml.epiapplication/x-epi.epsapplication/x-ps.epsapplication/postscript.etdapplication/x-ebx.exeapplication/x-msdownload.faximage/fax.fdfapplication/vnd.fdf.fifapplication/fractals.fotext/xml.frmapplication/x-frm.g4application/x-g4.gbrapplication/x-gbr.application/x-.gifimage/gif.gl2application/x-gl2.gp4application/x-gp4.hglapplication/x-hgl.hmrapplication/x-hmr.hpgapplication/x-hpgl.hplapplication/x-hpl.hqxapplication/mac-binhex40.hrfapplication/x-hrf.htaapplication/hta.htctext/x-component.htmtext/html.htmltext/html.htttext/webviewhtml.htxtext/html.icbapplication/x-icb.icoimage/x-icon.icoapplication/x-ico.iffapplication/x-iff.ig4application/x-g4.igsapplication/x-igs.iiiapplication/x-iphone.imgapplication/x-img.insapplication/x-internet-signup.ispapplication/x-internet-signup.IVFvideo/x-ivf.javajava/*.jfifimage/jpeg.jpeimage/jpeg.jpeapplication/x-jpe.jpegimage/jpeg.jpgimage/jpeg.jpgapplication/x-jpg.jsapplication/x-javascript.jsptext/html.la1audio/x-liquid-file.larapplication/x-laplayer-reg.latexapplication/x-latex.lavsaudio/x-liquid-secure.lbmapplication/x-lbm.lmsffaudio/x-la-lms.lsapplication/x-javascript.ltrapplication/x-ltr.m1vvideo/x-mpeg.m2vvideo/x-mpeg.m3uaudio/mpegurl.m4evideo/mpeg4.macapplication/x-mac.manapplication/x-troff-man.mathtext/xml.mdbapplication/msaccess.mdbapplication/x-mdb.mfpapplication/x-shockwave-flash.mhtmessage/rfc822.mhtmlmessage/rfc822.miapplication/x-mi.midaudio/mid.midiaudio/mid.milapplication/x-mil.mmltext/xml.mndaudio/x-musicnet-download.mnsaudio/x-musicnet-stream.mochaapplication/x-javascript.movievideo/x-sgi-movie.mp1audio/mp1.mp2audio/mp2.mp2vvideo/mpeg.mp3audio/mp3.mp4video/mpeg4.mpavideo/x-mpg.mpdapplication/vnd.ms-project.mpevideo/x-mpeg.mpegvideo/mpg.mpgvideo/mpg.mpgaaudio/rn-mpeg.mppapplication/vnd.ms-project.mpsvideo/x-mpeg.mptapplication/vnd.ms-project.mpvvideo/mpg.mpv2video/mpeg.mpwapplication/vnd.ms-project.mpxapplication/vnd.ms-project.mtxtext/xml.mxpapplication/x-mmxp.netimage/pnetvue.nrfapplication/x-nrf.nwsmessage/rfc822.odctext/x-ms-odc.outapplication/x-out.p10application/pkcs10.p12application/x-pkcs12.p7bapplication/x-pkcs7-certificates.p7capplication/pkcs7-mime.p7mapplication/pkcs7-mime.p7rapplication/x-pkcs7-certreqresp.p7sapplication/pkcs7-signature.pc5application/x-pc5.pciapplication/x-pci.pclapplication/x-pcl.pcxapplication/x-pcx.pdfapplication/pdf.pdfapplication/pdf.pdxapplication/vnd.adobe.pdx.pfxapplication/x-pkcs12.pglapplication/x-pgl.picapplication/x-pic.pkoapplication/vnd.ms-pki.pko.plapplication/x-perl.plgtext/html.plsaudio/scpls.pltapplication/x-plt.pngimage/png.pngapplication/x-png.potapplication/vnd.ms-powerpoint.ppaapplication/vnd.ms-powerpoint.ppmapplication/x-ppm.ppsapplication/vnd.ms-powerpoint.pptapplication/vnd.ms-powerpoint.pptapplication/x-ppt.prapplication/x-pr.prfapplication/pics-rules.prnapplication/x-prn.prtapplication/x-prt.psapplication/x-ps.psapplication/postscript.ptnapplication/x-ptn.pwzapplication/vnd.ms-powerpoint.r3ttext/vnd.rn-realtext3d.raaudio/vnd.rn-realaudio.ramaudio/x-pn-realaudio.rasapplication/x-ras.ratapplication/rat-file.rdftext/xml.recapplication/vnd.rn-recording.redapplication/x-red.rgbapplication/x-rgb.rjsapplication/vnd.rn-realsystem-rjs.rjtapplication/vnd.rn-realsystem-rjt.rlcapplication/x-rlc.rleapplication/x-rle.rmapplication/vnd.rn-realmedia.rmfapplication/vnd.adobe.rmf.rmiaudio/mid.rmjapplication/vnd.rn-realsystem-rmj.rmmaudio/x-pn-realaudio.rmpapplication/vnd.rn-rn_music_package.rmsapplication/vnd.rn-realmedia-secure.rmvbapplication/vnd.rn-realmedia-vbr.rmxapplication/vnd.rn-realsystem-rmx.rnxapplication/vnd.rn-realplayer.rpimage/vnd.rn-realpix.rpmaudio/x-pn-realaudio-plugin.rsmlapplication/vnd.rn-rsml.rttext/vnd.rn-realtext.rtfapplication/msword.rtfapplication/x-rtf.rvvideo/vnd.rn-realvideo.samapplication/x-sam.satapplication/x-sat.sdpapplication/sdp.sdwapplication/x-sdw.sitapplication/x-stuffit.slbapplication/x-slb.sldapplication/x-sld.slkdrawing/x-slk.smiapplication/smil.smilapplication/smil.smkapplication/x-smk.sndaudio/basic.soltext/plain.sortext/plain.spcapplication/x-pkcs7-certificates.splapplication/futuresplash.spptext/xml.ssmapplication/streamingmedia.sstapplication/vnd.ms-pki.certstore.stlapplication/vnd.ms-pki.stl.stmtext/html.styapplication/x-sty.svgtext/xml.swfapplication/x-shockwave-flash.tdfapplication/x-tdf.tg4application/x-tg4.tgaapplication/x-tga.tifimage/tiff.tifapplication/x-tif.tiffimage/tiff.tldtext/xml.topdrawing/x-top.torrentapplication/x-bittorrent.tsdtext/xml.txttext/plain.uinapplication/x-icq.ulstext/iuls.vcftext/x-vcard.vdaapplication/x-vda.vdxapplication/vnd.visio.vmltext/xml.vpgapplication/x-vpeg005.vsdapplication/vnd.visio.vsdapplication/x-vsd.vssapplication/vnd.visio.vstapplication/vnd.visio.vstapplication/x-vst.vswapplication/vnd.visio.vsxapplication/vnd.visio.vtxapplication/vnd.visio.vxmltext/xml.wavaudio/wav.waxaudio/x-ms-wax.wb1application/x-wb1.wb2application/x-wb2.wb3application/x-wb3.wbmpimage/vnd.wap.wbmp.wizapplication/msword.wk3application/x-wk3.wk4application/x-wk4.wkqapplication/x-wkq.wksapplication/x-wks.wmvideo/x-ms-wm.wmaaudio/x-ms-wma.wmdapplication/x-ms-wmd.wmfapplication/x-wmf.wmltext/vnd.wap.wml.wmvvideo/x-ms-wmv.wmxvideo/x-ms-wmx.wmzapplication/x-ms-wmz.wp6application/x-wp6.wpdapplication/x-wpd.wpgapplication/x-wpg.wplapplication/vnd.ms-wpl.wq1application/x-wq1.wr1application/x-wr1.wriapplication/x-wri.wrkapplication/x-wrk.wsapplication/x-ws.ws2application/x-ws.wsctext/scriptlet.wsdltext/xml.wvxvideo/x-ms-wvx.xdpapplication/vnd.adobe.xdp.xdrtext/xml.xfdapplication/vnd.adobe.xfd.xfdfapplication/vnd.adobe.xfdf.xhtmltext/html.xlsapplication/vnd.ms-excel.xlsapplication/x-xls.xlwapplication/x-xlw.xmltext/xml.xplaudio/scpls.xqtext/xml.xqltext/xml.xquerytext/xml.xsdtext/xml.xsltext/xml.xslttext/xml.xwdapplication/x-xwd.x_bapplication/x-x_b.sisapplication/vnd.symbian.install.sisxapplication/vnd.symbian.install.x_tapplication/x-x_t.ipaapplication/vnd.iphone.apkapplication/vnd.android.package-archive.xapapplication/x-silverlight-app
MIME 类型
MIME 类型Multipurpose Internet Mail Extensions是一种标准用于描述文档、文件或字节流的性质和格式。浏览器通过 MIME 类型来确定如何处理 URL 中的内容而不是简单依赖文件扩展名。Web 服务器在发送 HTTP 响应时会在头部包含 MIME 类型信息这有助于浏览器正确解析和显示文件。
MIME 类型的结构
MIME 类型由 type/subtype 组成表示文件的大类type和具体的子类型subtype。例如
text/html表示 HTML 文件。image/jpeg表示 JPEG 图像。
类型和子类型之间使用斜杠分隔MIME 类型大小写不敏感但通常小写。
常见的 MIME 类型
一些常用 MIME 类型如下
text/plain普通文本文件.txttext/htmlHTML 文件.html, .htmapplication/pdfPDF 文件.pdfimage/jpegJPEG 图像.jpg, .jpegaudio/mpegMPEG 音频文件.mp3video/mp4MP4 视频文件.mp4
常见 MIME 类型列表
类型/子类型文件扩展名描述text/plain.txt普通文本文件text/html.html, .htmHTML 文件application/pdf.pdfPDF 文件image/jpeg.jpeg, .jpgJPEG 图像audio/mpeg.mp3MPEG 音频文件video/mp4.mp4MP4 视频文件application/zip.zipZIP 压缩文件image/png.pngPNG 图像application/x-gzip.gzGZIP 压缩文件application/vnd.ms-excel.xlsMicrosoft Excel 文件application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.xlsxExcel 文档格式 (Office Open XML)
默认 MIME 类型
text/plain对于普通文本文件的默认 MIME 类型。application/octet-stream如果无法确定 MIME 类型时的默认二进制数据类型。
重要性
如果 Web 服务器配置错误未正确指定 MIME 类型浏览器可能无法解析文件内容导致文件无法正常加载或下载。这就是为什么在开发和部署 Web 应用程序时确保 MIME 类型的正确性至关重要。
HTTP2
HTTP/2超文本传输协议第2版最初命名为HTTP 2.0简称为h2基于TLS/1.2或以上版本的加密连接或h2c非加密连接 HTTP/2 是 HTTP 协议的第二个主要版本用于在 Web 服务器和客户端之间传输数据。
HTTP/2 是 HTTP 协议自 1999 年 HTTP 1.1 的改进版 RFC 发布后的首个更新主要基于 SPDY 协议。
多数主流浏览器已经在 2015 年底支持了该协议。
HTTP/2是一种网络协议是HTTP/1.1的升级版由IETF在2015年发布。HTTP/2旨在提高Web性能减少延迟增加安全性使Web应用更加快速、高效和可靠。 HTTP/2 特点
下面是 HTTP/2 的一些特点和改进之处 多路复用HTTP/2 允许同时发送多个请求和响应而不是像 HTTP/1.1 一样只能一个一个地处理。这样可以减少延迟提高效率提高网络吞吐量。 二进制传输HTTP/2 使用二进制协议与 HTTP/1.1 使用的文本协议不同。二进制协议可以更快地解析更有效地传输数据减少了传输过程中的开销和延迟。 头部压缩HTTP/2 使用 HPACK 算法对 HTTP 头部进行压缩减少了头部传输的数据量从而减少了网络延迟。 服务器推送HTTP/2 支持服务器推送允许服务器在客户端请求之前推送资源以提高性能。 改进的安全性HTTP/2 默认使用 TLSTransport Layer Security加密传输数据提高了安全性。 兼容 HTTP/1.1HTTP/2 可以与 HTTP/1.1 共存服务器可以同时支持 HTTP/1.1 和 HTTP/2。如果客户端不支持 HTTP/2服务器可以回退到 HTTP/1.1。
总的来说HTTP/2在性能、安全性和可用性方面都有显著的改进可以使 Web 应用更加快速、高效和可靠。
对数据传输采用多路复用让多个请求合并在同一 TCP 连接内如下图所示 HTTP/2 减少网络延迟提高浏览器的页面加载速度 HTTP/2 使用二进制格式来传输数据而不是像 HTTP/1.1 一样使用文本格式。这提高了效率并降低了数据传输的延迟。 HTTP/2 使用头部压缩来减少传输数据的大小。这有助于减少网络带宽的使用量并提高页面加载速度。 HTTP/2 允许服务器在不被请求的情况下主动向客户端发送数据。这有助于减少请求延迟并提高页面加载速度。