HTTP探秘:揭开互联网传输的神秘面纱,让你的网络之旅更顺畅!
为什么要了解 HTTP ?
- 我们的 WEB 难免要和用户交互,与用户就要制作表单,就要和服务器通讯,和服务器通讯就要用到 HTTP 协议
- 我们的 创建高品质 WEB 里提到,创建高性能的 WEB,必须要了解 HTTP 协议
- 面试 WEB 开发,面试官一定会问到好多 HTTP 协议里的内容,比如
- HTTP 状态码 301 和 302 有什么区别
- HTTP POST 和 GET 方法有什么区别
HTTP 简介
- HTTP 协议 是(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的 WWW 文件都必须遵守这个标准
- HTTP是一个基于 TCP/IP 通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)
HTTP 工作原理
- HTTP 协议工作于客户端-服务端架构为上。浏览器作为 HTTP 客户端通过 URL 向 HTTP 服务端即 WEB 服务器发送所有请求
- Web服务器有:Nginx 服务器,Apache 服务器,IIS 服务器 ( Internet Information Services ) 等
- Web服务器根据接收到的请求后,向客户端发送响应信息。
- HTTP 默认端口号为 80 ,但是你也可以改为 8080 或者其他端口
HTTP 三点注意事项
-
HTTP是无连接
- 无连接的含义是限制每次连接只处理一个请求
- 服务器处理完客户的请求,并收到客户的应答后,即断开连接
- 采用这种方式可以节省传输时间
-
HTTP是媒体独立的
- 这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过 HTTP 发送
客户端以及服务器指定使用适合的 MIME-type 内容类型
- 这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过 HTTP 发送
-
HTTP是无状态
- HTTP 协议是无状态协议
- 无状态是指协议对于事务处理没有记忆能力
- 缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大
- 另一方面,在服务器不需要先前信息时它的应答就较快
HTTP 范例
我们使用 CURL 发送模拟 GET 请求服务器上的 static/media/hello.txt 文件
shell 命令
curl -v /static/media/hello.txt
客户端请求信息
GET /static/media/hello.txt HTTP/1.1
Host: www.ddkk.com
User-Agent: curl/7.54.0
Accept: */*
服务端响应
HTTP/1.1 200 OK
Server: Tengine
Date: Sun, 03 Sep 2017 01:08:42 GMT
Content-Type: text/plain
Content-Length: 38
Last-Modified: Sun, 03 Sep 2017 01:08:21 GMT
Connection: keep-alive
ETag: "59ab5605-26"
Strict-Transport-Security: max-age=31536000;includeSubdomains;preload
X-Frame-Options: DENY
Accept-Ranges: bytes
输出结果
你好,世界
HTTP 请求结构
HTTP 是基于客户端(代理)/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议
HTTP 请求过程
- 一个HTTP 代理(userAgent) 是一个应用程序(Web浏览器或其他任何客户端),通过连接到服务器达到向服务器发送一个或多个 HTTP 的请求的目的
- 一个HTTP 服务器(SERVER) 同样也是一个应用程序(通常是一个 Web 服务,如Apache Web 服务器或IIS服务器或 NGINX 等),通过接收客户端的请求并向客户端发送HTTP响应数据
- HTTP 使用统一资源标识符(Uniform Resource Identifiers, URI)来传输数据和建立连接
- 一旦建立连接后,数据消息就通过类似 Internet 邮件所使用的格式 [RFC5322]和多用途Internet邮件扩展(MIME)[RFC2045]来传送
客户端请求消息
客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成
请求行(request line)
请求行是请求消息里的第一行数据
GET /static/media/hello.txt HTTP/1.1
请求头部(header)
请求头部为第二行到第一个空行之前所有的内容
Host: www.baidu.com
User-Agent: curl/7.54.0
Accept: */*
空行
空行就是两个 CRLF
请求数据
请求数据就是空行之后的所有数据
除了 POST 方法和 PUT 方法,其他所有的方法都没有请求数据
HTTP 响应结构
HTTP 响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文
状态行
服务器响应的第一行就是状态行
HTTP/1.1 200 OK
消息报头
从第二行开始到第一个 CRLF CRLF
之前的内容为报头
Server: Tengine
Date: Sun, 03 Sep 2017 01:08:42 GMT
Content-Type: text/plain
Content-Length: 38
Last-Modified: Sun, 03 Sep 2017 01:08:21 GMT
Connection: keep-alive
ETag: "59ab5605-26"
Strict-Transport-Security: max-age=31536000;includeSubdomains;preload
X-Frame-Options: DENY
Accept-Ranges: bytes
CRLF 是回车换行的意思,CRLF CRLF 就是两个回车换行符
空行
空行就是 CRLF CRLF
也就是两个回车换行符 一个回车换行符提供换行,第二个回车换行符则提供了一个空行
响应正文
空行之后的所有内容都是响应正文
你好,世界
HTTP 请求方法
- 根据HTTP 标准,HTTP 请求可以使用多种请求方法
- HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD 方法
- HTTP1.1 新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法
但目前大部分浏览器只支持 HTTP1.0里的三大方法
目前最新的 HTTP 版本是 HTTP 2.0
幂等
是说这个请求可以重复发送多次相同请求求,会返回相同的响应消息
记住 幂等性非常重要,也是众多面试高频问题,是创建高性能 WEB 服务里最重要的一个概念
POST 方法是非幂等的,所有这个方法有很多妙用
方法 | 是否幂等 | 描述 |
---|---|---|
GET | 幂等 | 请求指定的页面信息,并返回实体主体 |
HEAD | 幂等 | 类似于 GET请求,但只返回响应报头,不返回响应正文 |
POST | 非幂等 | 向指定资源提交数据(例如提交表单或者上传文件)数据被包含在请求体中POST请求可能会导致新的资源的建立和/或已有资源的修改 |
PUT | 幂等 | 从客户端向服务器传送的数据取代指定的文档的内容 |
DELETE | 幂等 | 请求服务器删除指定的页面 |
CONNECT | 幂等 | HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器 |
OPTIONS | 幂等 | 允许客户端查看服务器的性能 |
TRACE | 幂等 | 回显服务器收到的请求,主要用于测试或诊断 |
HTTP 头部信息
HTTP 请求头提供了关于请求,响应或者其他的发送实体的信息
应答头 | 说明 |
---|---|
Allow | 服务器支持哪些请求方法(如GET、POST等) |
Content-Encoding | 文档的编码(Encode)方法 |
Content-Length | 表示响应内容长度 |
Content-Type | 表示响应内容属于什么 MIME类型 |
Date | 当前的 GMT 时间 |
Expires | 指示响应内容过期时间,到了时间就要重新发起请求 |
Last-Modified | 指示响应内容最后改动时间 |
Location | 表示客户应当到哪里去提取文档 |
Refresh | 表示浏览器应该在多少时间之后刷新文档,以秒计 |
Server | 服务器名字 |
Set-Cookie | 设置和页面关联的Cookie |
WWW-Authenticate | 客户应该在Authorization头中提供什么类型的授权信息 |
最佳实战
Content-Encoding:
利用gzip压缩文档能够显著地减少HTML文档的下载时间Content-Length:
只有当浏览器使用持久HTTP连接时才需要这个数据Content-Type:
通常需要显式地指定为 text/htmlLast-Modified:
客户可以通过 If-Modified-Since 请求头提供一个日期,该请求将被视为一个条件 GET,只有改动时间迟于指定时间的文档才会返回
否则返回一个304(Not Modified)
状态Refresh:
除了刷新当前文档之外,还可以通过设置响应头部
Refresh:5; URL=http://host/path
让浏览器读取指定的页面
注意这种功能通常是通过设置 HTML 页面 <head>
区的 <meta>
实现
<meta http-equiv="refresh" content="5;URL=http://host/path">
注意Refresh的意义是"N秒之后刷新本页面或访问指定页面",而不是"每隔N秒刷新本页面或访问指定页面"。因此,连续刷新要求每次都发送一个Refresh头,而发送204状态代码则可以阻止浏览器继续刷新,不管是使用Refresh头还是
<meta http-equiv="Refresh" ...>
注意Refresh头不属于HTTP 1.1正式规范的一部分,而是一个扩展,但目前所有浏览器都支持
WWW-Authenticate:
在包含401(Unauthorized)状态行的应答中这个头是必需的
HTTP 应答状态码
当我们访问一个网页时,浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含 HTTP状态码的 状态行 用以响应浏览器的请求
HTTP 状态码分类
HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型。
HTTP状态码共分为5种类型:
HTTP 状态码分类 | 分类描述 |
---|---|
1** | 信息,服务器收到请求,需要请求者继续执行操作 |
2** | 成功,操作被成功接收并处理 |
3** | 重定向,需要进一步的操作以完成请求 |
4** | 客户端错误,请求包含语法错误或无法完成请求 |
5** | 服务器错误,服务器在处理请求的过程中发生了错误 |
记住,这5种类型一定要记住,因为通常情况下都会问 1 开头的状态码表示啥意思之类的
HTTP 状态码列表
状态码 | 英文名称 | 描述 |
---|---|---|
100 | Continue | 继续,UserAgent 应继续其请求 |
101 | Switching Protocols | 切换协议,服务器根据客户端的请求切换协议,只能切换到更高级的协议;例如:切换到 HTTP2 的新版本协议 |
200 | OK | 请求成功,一般用于GET与POST请求 |
201 | Created | 已创建,成功请求并创建了新的资源 |
202 | Accepted | 已接受,已经接受请求,但未处理完成 |
203 | Non-Authoritative Information | 非授权信息,请求成功,但返回的meta信息不在原始的服务器,而是一个副本 |
204 | No Content | 无内容,服务器成功处理,但未返回内容,在未更新网页的情况下,可确保浏览器继续显示当前文档 |
205 | Reset Content | 重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域 |
206 | Partial Content | 部分内容。服务器成功处理了部分GET请求 |
300 | Multiple Choices | 种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择 |
301 | Moved Permanently | 永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替 |
302 | Found | 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI |
303 | See Other | 查看其它地址。与301类似。使用GET和POST请求查看 |
304 | Not Modified | 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源 |
305 | Use Proxy | 使用代理。所请求的资源必须通过代理访问 |
306 | Unused | 已经被废弃的HTTP状态码 |
307 | Temporary Redirect | 临时重定向。与302类似。使用GET请求重定向 |
400 | Bad Request | 客户端请求的语法错误,服务器无法理解 |
401 | Unauthorized | 请求要求用户的身份认证 |
402 | Payment Required | 保留,将来使用 |
403 | Forbidden | 服务器理解请求客户端的请求,但是拒绝执行此请求 |
404 | Not Found | 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面 |
405 | Method Not Allowed | 客户端请求中的方法被禁止 |
406 | Not Acceptable | 服务器无法根据客户端请求的内容特性完成请求 |
407 | Proxy Authentication Required | 请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权 |
408 | Request Time-out | 服务器等待客户端发送的请求时间过长,超时 |
409 | Conflict | 服务器完成客户端的PUT请求是可能返回此代码,服务器处理请求时发生了冲突 |
410 | Gone | 客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置 |
411 | Length Required | 服务器无法处理客户端发送的不带Content-Length的请求信息 |
412 | Precondition Failed | 客户端请求信息的先决条件错误 |
413 | Request Entity Too Large | 由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息 |
414 | Request-URI Too Large | 请求的URI过长(URI通常为网址),服务器无法处理 |
415 | Unsupported Media Type | 服务器无法处理请求附带的媒体格式 |
416 | Requested range not satisfiable | 客户端请求的范围无效 |
417 | Expectation Failed | 服务器无法满足Expect的请求头信息 |
500 | Internal Server Error | 服务器内部错误,无法完成请求 |
501 | Not Implemented | 服务器不支持请求的功能,无法完成请求 |
502 | Bad Gateway | 充当网关或代理的服务器,从远端服务器接收到了一个无效的请求 |
503 | Service Unavailable | 因超载或系统维护,服务器暂时无法处理客户端的请求延时的长度可包含在服务器的Retry-After头信息中 |
504 | Gateway Time-out | 充当网关或代理的服务器,未及时从远端服务器获取请求 |
505 | HTTP Version not supported | 服务器不支持请求的HTTP协议的版本,无法完成处理 |
HTTP 内容类型
- Content-Type 是指内容类型,一般是指网页中存在的 Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件
- 如果配置了不恰当的 Content-Type 那么访问这些内容的结果就是下载一个文件
HTTP 文件扩展名和内容类型对照表
文件扩展名 | 内容类型 |
---|---|
.* | application/octet-stream |
.tif | image/tiff |
.001 | application/x-001 |
.301 | application/x-301 |
.323 | text/h323 |
.906 | application/x-906 |
.907 | drawing/907 |
.a11 | application/x-a11 |
.acp | audio/x-mei-aac |
.ai | application/postscript |
.aif | audio/aiff |
.aifc | audio/aiff |
.aiff | audio/aiff |
.anv | application/x-anv |
.asa | text/asa |
.asf | video/x-ms-asf |
.asp | text/asp |
.asx | video/x-ms-asf |
.au | audio/basic |
.avi | video/avi |
.awf | application/vnd |
.biz | text/xml |
.bmp | application/x-bmp |
.bot | application/x-bot |
.c4t | application/x-c4t |
.c90 | application/x-c90 |
.cal | application/x-cals |
.cat | application/vnd |
.cdf | application/x-netcdf |
.cdr | application/x-cdr |
.cel | application/x-cel |
.cer | application/x-x509-ca-cert |
.cg4 | application/x-g4 |
.cgm | application/x-cgm |
.cit | application/x-cit |
.class | java/* |
.cml | text/xml |
.cmp | application/x-cmp |
.cmx | application/x-cmx |
.cot | application/x-cot |
.crl | application/pkix-crl |
.crt | application/x-x509-ca-cert |
.csi | application/x-csi |
.css | text/css |
.cut | application/x-cut |
.dbf | application/x-dbf |
.dbm | application/x-dbm |
.dbx | application/x-dbx |
.dcd | text/xml |
.dcx | application/x-dcx |
.der | application/x-x509-ca-cert |
.dgn | application/x-dgn |
.dib | application/x-dib |
.dll | application/x-msdownload |
.doc | application/msword |
.dot | application/msword |
.drw | application/x-drw |
.dtd | text/xml |
.dwf | Model/vnd |
.dwf | application/x-dwf |
.dwg | application/x-dwg |
.dxb | application/x-dxb |
.dxf | application/x-dxf |
.edn | application/vnd |
.emf | application/x-emf |
.eml | message/rfc822 |
.ent | text/xml |
.epi | application/x-epi |
.eps | application/x-ps |
.eps | application/postscript |
.etd | application/x-ebx |
.exe | application/x-msdownload |
.fax | image/fax |
.fdf | application/vnd |
.fif | application/fractals |
.fo | text/xml |
.frm | application/x-frm |
.g4 | application/x-g4 |
.gbr | application/x-gbr |
. | application/x- |
.gif | image/gif |
.gl2 | application/x-gl2 |
.gp4 | application/x-gp4 |
.hgl | application/x-hgl |
.hmr | application/x-hmr |
.hpg | application/x-hpgl |
.hpl | application/x-hpl |
.hqx | application/mac-binhex40 |
.hrf | application/x-hrf |
.hta | application/hta |
.htc | text/x-component |
.htm | text/html |
.html | text/html |
.htt | text/webviewhtml |
.htx | text/html |
.icb | application/x-icb |
.ico | image/x-icon |
.ico | application/x-ico |
.iff | application/x-iff |
.ig4 | application/x-g4 |
.igs | application/x-igs |
.iii | application/x-iphone |
.img | application/x-img |
.ins | application/x-internet-signup |
.isp | application/x-internet-signup |
.IVF | video/x-ivf |
.java | java/* |
.jfif | image/jpeg |
.jpe | image/jpeg |
.jpe | application/x-jpe |
.jpeg | image/jpeg |
.jpg | image/jpeg |
.jpg | application/x-jpg |
.js | application/x-javascript |
.jsp | text/html |
.la1 | audio/x-liquid-file |
.lar | application/x-laplayer-reg |
.latex | application/x-latex |
.lavs | audio/x-liquid-secure |
.lbm | application/x-lbm |
.lmsff | audio/x-la-lms |
.ls | application/x-javascript |
.ltr | application/x-ltr |
.m1v | video/x-mpeg |
.m2v | video/x-mpeg |
.m3u | audio/mpegurl |
.m4e | video/mpeg4 |
.mac | application/x-mac |
.man | application/x-troff-man |
.math | text/xml |
.mdb | application/msaccess |
.mdb | application/x-mdb |
.mfp | application/x-shockwave-flash |
.mht | message/rfc822 |
.mhtml | message/rfc822 |
.mi | application/x-mi |
.mid | audio/mid |
.midi | audio/mid |
.mil | application/x-mil |
.mml | text/xml |
.mnd | audio/x-musicnet-download |
.mns | audio/x-musicnet-stream |
.mocha | application/x-javascript |
.movie | video/x-sgi-movie |
.mp1 | audio/mp1 |
.mp2 | audio/mp2 |
.mp2v | video/mpeg |
.mp3 | audio/mp3 |
.mp4 | video/mpeg4 |
.mpa | video/x-mpg |
.mpd | application/vnd |
.mpe | video/x-mpeg |
.mpeg | video/mpg |
.mpg | video/mpg |
.mpga | audio/rn-mpeg |
.mpp | application/vnd |
.mps | video/x-mpeg |
.mpt | application/vnd |
.mpv | video/mpg |
.mpv2 | video/mpeg |
.mpw | application/vnd |
.mpx | application/vnd |
.mtx | text/xml |
.mxp | application/x-mmxp |
.net | image/pnetvue |
.nrf | application/x-nrf |
.nws | message/rfc822 |
.odc | text/x-ms-odc |
.out | application/x-out |
.p10 | application/pkcs10 |
.p12 | application/x-pkcs12 |
.p7b | application/x-pkcs7-certificates |
.p7c | application/pkcs7-mime |
.p7m | application/pkcs7-mime |
.p7r | application/x-pkcs7-certreqresp |
.p7s | application/pkcs7-signature |
.pc5 | application/x-pc5 |
.pci | application/x-pci |
.pcl | application/x-pcl |
.pcx | application/x-pcx |
application/pdf | |
application/pdf | |
.pdx | application/vnd |
.pfx | application/x-pkcs12 |
.pgl | application/x-pgl |
.pic | application/x-pic |
.pko | application/vnd |
.pl | application/x-perl |
.plg | text/html |
.pls | audio/scpls |
.plt | application/x-plt |
.png | image/png |
.png | application/x-png |
.pot | application/vnd |
.ppa | application/vnd |
.ppm | application/x-ppm |
.pps | application/vnd |
.ppt | application/vnd |
.ppt | application/x-ppt |
.pr | application/x-pr |
.prf | application/pics-rules |
.prn | application/x-prn |
.prt | application/x-prt |
.ps | application/x-ps |
.ps | application/postscript |
.ptn | application/x-ptn |
.pwz | application/vnd |
.r3t | text/vnd |
.ra | audio/vnd |
.ram | audio/x-pn-realaudio |
.ras | application/x-ras |
.rat | application/rat-file |
.rdf | text/xml |
.rec | application/vnd |
.red | application/x-red |
.rgb | application/x-rgb |
.rjs | application/vnd |
.rjt | application/vnd |
.rlc | application/x-rlc |
.rle | application/x-rle |
.rm | application/vnd |
.rmf | application/vnd |
.rmi | audio/mid |
.rmj | application/vnd |
.rmm | audio/x-pn-realaudio |
.rmp | application/vnd |
.rms | application/vnd |
.rmvb | application/vnd |
.rmx | application/vnd |
.rnx | application/vnd |
.rp | image/vnd |
.rpm | audio/x-pn-realaudio-plugin |
.rsml | application/vnd |
.rt | text/vnd |
.rtf | application/msword |
.rtf | application/x-rtf |
.rv | video/vnd |
.sam | application/x-sam |
.sat | application/x-sat |
.sdp | application/sdp |
.sdw | application/x-sdw |
.sit | application/x-stuffit |
.slb | application/x-slb |
.sld | application/x-sld |
.slk | drawing/x-slk |
.smi | application/smil |
.smil | application/smil |
.smk | application/x-smk |
.snd | audio/basic |
.sol | text/plain |
.sor | text/plain |
.spc | application/x-pkcs7-certificates |
.spl | application/futuresplash |
.spp | text/xml |
.ssm | application/streamingmedia |
.sst | application/vnd |
.stl | application/vnd |
.stm | text/html |
.sty | application/x-sty |
.svg | text/xml |
.swf | application/x-shockwave-flash |
.tdf | application/x-tdf |
.tg4 | application/x-tg4 |
.tga | application/x-tga |
.tif | image/tiff |
.tif | application/x-tif |
.tiff | image/tiff |
.tld | text/xml |
.top | drawing/x-top |
.torrent | application/x-bittorrent |
.tsd | text/xml |
.txt | text/plain |
.uin | application/x-icq |
.uls | text/iuls |
.vcf | text/x-vcard |
.vda | application/x-vda |
.vdx | application/vnd |
.vml | text/xml |
.vpg | application/x-vpeg005 |
.vsd | application/vnd |
.vsd | application/x-vsd |
.vss | application/vnd |
.vst | application/vnd |
.vst | application/x-vst |
.vsw | application/vnd |
.vsx | application/vnd |
.vtx | application/vnd |
.vxml | text/xml |
.wav | audio/wav |
.wax | audio/x-ms-wax |
.wb1 | application/x-wb1 |
.wb2 | application/x-wb2 |
.wb3 | application/x-wb3 |
.wbmp | image/vnd |
.wiz | application/msword |
.wk3 | application/x-wk3 |
.wk4 | application/x-wk4 |
.wkq | application/x-wkq |
.wks | application/x-wks |
.wm | video/x-ms-wm |
.wma | audio/x-ms-wma |
.wmd | application/x-ms-wmd |
.wmf | application/x-wmf |
.wml | text/vnd |
.wmv | video/x-ms-wmv |
.wmx | video/x-ms-wmx |
.wmz | application/x-ms-wmz |
.wp6 | application/x-wp6 |
.wpd | application/x-wpd |
.wpg | application/x-wpg |
.wpl | application/vnd |
.wq1 | application/x-wq1 |
.wr1 | application/x-wr1 |
.wri | application/x-wri |
.wrk | application/x-wrk |
.ws | application/x-ws |
.ws2 | application/x-ws |
.wsc | text/scriptlet |
.wsdl | text/xml |
.wvx | video/x-ms-wvx |
.xdp | application/vnd |
.xdr | text/xml |
.xfd | application/vnd |
.xfdf | application/vnd |
.xhtml | text/html |
.xls | application/vnd |
.xls | application/x-xls |
.xlw | application/x-xlw |
.xml | text/xml |
.xpl | audio/scpls |
.xq | text/xml |
.xql | text/xml |
.xquery | text/xml |
.xsd | text/xml |
.xsl | text/xml |
.xslt | text/xml |
.xwd | application/x-xwd |
.x_b | application/x-x_b |
.sis | application/vnd |
.sisx | application/vnd |
.x_t | application/x-x_t |
.ipa | application/vnd |
.apk | application/vnd |
.xap | application/x-silverlight-app |
.* 表示任意文件扩展名