浏览器工作原理

合集下载

Web工作原理

Web工作原理

Web工作原理Web工作原理是指互联网上的网页是如何被创建、传输和显示的过程。

在这个过程中,涉及到多个关键的组成部分和技术,包括浏览器、服务器、HTTP协议、HTML、CSS和JavaScript等。

下面将详细介绍Web工作原理的各个方面。

1. 浏览器浏览器是用户访问Web页面的工具,常见的浏览器有Chrome、Firefox和Safari等。

当用户在浏览器中输入URL或者点击链接时,浏览器会发送请求给服务器,获取Web页面的内容。

2. 服务器服务器是存储和提供Web页面的计算机,它可以是物理服务器或者虚拟服务器。

服务器接收到浏览器的请求后,会根据请求的URL找到对应的Web页面,并将页面的内容发送回浏览器。

3. HTTP协议HTTP协议是浏览器和服务器之间进行通信的规则。

当浏览器发送请求时,会使用HTTP协议将请求的方法(如GET或POST)、URL和其他相关信息发送给服务器。

服务器接收到请求后,会使用HTTP协议将Web页面的内容以及状态码(如200表示成功或404表示页面未找到)发送回浏览器。

4. HTMLHTML(Hypertext Markup Language)是一种用于创建Web页面的标记语言。

它通过使用标签和属性来定义页面的结构和内容。

浏览器接收到服务器发送的HTML内容后,会解析HTML代码,并根据标签和属性的定义来渲染页面。

5. CSSCSS(Cascading Style Sheets)是一种用于控制页面样式和布局的样式表语言。

它通过选择器和属性来定义页面元素的外观。

浏览器在解析HTML代码的同时,会解析CSS代码,并将样式应用到对应的页面元素上。

6. JavaScriptJavaScript是一种用于实现交互和动态效果的脚本语言。

它可以在浏览器中运行,并通过操作页面元素和处理用户事件来实现各种功能。

浏览器在解析HTML和CSS之后,会执行JavaScript代码,并根据代码的逻辑来改变页面的行为和内容。

web的工作原理是什么

web的工作原理是什么

web的工作原理是什么
Web的工作原理是通过客户端和服务器之间的通信来实现网
络上的信息传递和数据交换。

当用户在浏览器中输入一个网址或点击链接时,浏览器会发送一个HTTP请求到指定的服务器。

这个请求中包含了用户想要访问的资源的信息,例如网页的URL、请求方法等。

服务器接收到请求后,会解析请求信息,并根据请求的资源路径进行处理。

服务器可以根据请求的路径,从文件系统中读取对应的文件,或者执行其它后端操作。

然后服务器会创建一个HTTP响应,包含了所请求资源的内容和一些额外的元数据,
例如响应状态码、响应头部等。

服务器将响应发送回给浏览器,浏览器收到响应后,会根据响应的内容进行解析和渲染。

如果响应是一个HTML文件,浏
览器会解析HTML标签,构建DOM树,并将其展示给用户。

如果响应中包含了其他资源,例如CSS、JavaScript、图片等,浏览器会继续发送额外的请求,获取这些资源,并进行相应的处理和展示。

通过这种方式,用户可以通过浏览器与远程服务器进行交互,获取所需的信息并进行数据交换。

整个过程中,涉及到了客户端(浏览器)和服务器之间的请求和响应,以及数据的传输和处理。

浏览器原理的书籍

浏览器原理的书籍

浏览器原理的书籍浏览器是我们经常使用的一种软件,它有很多的功能,如浏览网页、处理网络请求、渲染页面等,这些功能的背后都有着一些原理。

浏览器原理涉及到很多领域,如网络协议、操作系统、编程语言等。

在这篇文章中,我将尝试解释浏览器原理,并推荐一些相关的书籍。

首先,我们需要了解浏览器是如何工作的。

当我们在浏览器中输入一个网址时,浏览器会向服务器发送请求,并接收响应。

这个过程涉及到网络协议,如HTTP、TCP等。

一旦服务器响应了请求,浏览器会接收到HTML、CSS、JavaScript 等文件,并开始渲染页面。

这个过程涉及到一些编程语言,如JavaScript、HTML、CSS等。

最后,浏览器会将渲染好的页面展示给我们。

下面是一些与浏览器原理相关的书籍:1.《深入浅出Node.js》:这本书介绍了Node.js的原理和运行机制,深入探讨了HTTP协议和网络编程等概念。

如果你想了解浏览器是如何处理网络请求的,这本书是一个不错的选择。

2.《Web性能权威指南》:这本书主要讲解了如何提高Web应用的性能,包括网络请求、缓存、渲染和JavaScript性能等方面。

如果你想了解浏览器中响应时间、加载时间等性能指标的计算方法,这本书非常实用。

3.《JavaScript高级程序设计》:这本书主要介绍了JavaScript语言的原理、特性以及应用场景,包括DOM操作、事件处理等方面。

如果你想了解浏览器中JavaScript的工作原理,这本书非常适合你。

4.《HTTP权威指南》:这本书详细介绍了HTTP协议的各个特性和应用场景,包括HTTP请求、响应、Cookie、安全等方面。

如果你想了解浏览器中HTTP 协议的工作原理,这本书是一个不错的选择。

5.《深入浏览器内核》:这本书非常深入地探讨了浏览器内核的各个方面,包括渲染引擎、JavaScript引擎、安全机制等。

如果你想了解浏览器的内部工作原理,这本书是一个非常好的选择。

浏览器工作原理

浏览器工作原理

浏览器工作原理浏览器工作原理指的是浏览器在用户输入网址后,通过一系列的步骤将网页呈现给用户的过程。

首先,当用户输入网址并按下回车键后,浏览器会解析输入的网址,判断是一个合法的URL还是一个搜索查询。

如果是合法的URL,则浏览器会进行以下步骤。

第一步是域名解析,浏览器会向域名服务器发送请求,获取该网址对应的IP地址。

域名服务器将返回一个IP地址给浏览器,用于后续的通信。

第二步是建立TCP连接,通过IP地址和端口号,浏览器与服务器建立TCP连接。

这是一个三次握手的过程,在连接建立后,浏览器可以向服务器发送HTTP请求。

第三步是发送HTTP请求,浏览器将用户请求的资源封装成HTTP请求报文,发送给服务器。

HTTP请求报文包括请求方法、URL、协议版本、请求头等信息。

第四步是服务器处理请求,服务器接收到浏览器发送的HTTP请求后,会根据请求的内容进行处理。

服务器可能会返回请求资源的实际内容,或者执行一些操作后返回结果。

第五步是接收HTTP响应,浏览器接收到服务器返回的HTTP响应后,会对响应进行解析。

HTTP响应报文包括状态码、响应头、响应体等信息。

状态码表示服务器对请求的处理结果。

第六步是渲染页面,浏览器将接收到的HTML、CSS、JavaScript等文件按照各自的规则进行解析和渲染。

浏览器会构建DOM树,解析CSS样式表,执行JavaScript脚本,最终将网页呈现给用户。

除了上述步骤,浏览器还有一些其他的功能,如缓存管理、Cookie处理、插件支持等。

这些功能都是为了提供更好的用户体验和更高的性能。

总之,浏览器工作原理涉及多个环节,包括域名解析、建立TCP连接、发送HTTP请求、服务器处理请求、接收HTTP响应以及页面解析和渲染等。

通过这些步骤,浏览器可以将用户输入的网址转化为最终呈现给用户的页面。

浏览器工作原理(how browsers work)中英文对照版

浏览器工作原理(how browsers work)中英文对照版
浏览器的主要功能
浏览器的主要功能是展现你所需要的 web 资源,它从服务器端请求资源并显示在浏览器窗口上, 资源格式一般为 html,但是也可以是 pdf,image 或者其他的格式。资源的地址是由用户通过 URI (统一资源定位符)来指定的,关于这个在网络那章里做更多的介绍。 HTML 和 CSS 规范里指定了浏览器解析和显示 HTML 文件的方式,W3C 维护这些规范,它们是 web 的标准化组织。 HTML 的当前版本是 4,第 5 版正在进行中。CSS 的当前版本是 2,第 3 版正在进行中。 过去的很多年里,各个浏览器都是只遵守规范的一部分,然后做它们自己的扩展,这对于 web 开 发者来说引起了严重的兼容性问题,现在浏览器大都或多或少的遵守了规范。 各浏览器的用户界面彼此有很多共同的地方,共同的元素有: 1.键入 URI 的地址栏 2.后退和前进按钮 3.书签菜单 4.用来刷新和停止当前文档加载的刷新和停止按钮 5.帮你返回主页的主页按钮 说来奇怪,并没有任何正式的规范指定浏览器的用户界面,这只是多年试验以及各浏览器互相模 仿形成的一个好的做法。HTML5 规范中没有定义浏览器一定会有哪些 UI 元素,但是列举出了一 些通用的元素,有地址栏、状态栏和工具栏。当然,特定浏览器还有一些独一无二的特征,比如 Firefox 的下载管理。关于这个在 UI 那章里做更多的介绍。
规范(html5)把浏览器中的“web database”定义为一个完完全全的(虽然很轻)数据库。
图 1 浏览器主要组件 注释一下 Chrome 很重要,和大多数浏览器不同,它保持渲染引擎的多个实例--每个选项卡一 个,每个选项卡都是独立的进程。 我会为每个组件写一章。
组件间通信 Firefox 和 Chrome 都开发了一个专门的通信基本件。 这个会在专门的一章里讨论。

浏览器工作原理(how browsers work)中英文对照版

浏览器工作原理(how browsers work)中英文对照版
图 6 从原始文档到解析树 这个解析过程是迭代的。解析器通常会向词法分析器请求新的子串然后试图用某些语法规则来匹 配这个子串,如果匹配了,会在解析树上加上这个子串相应的节点,然后请求新的子串;如果没 有匹配,解析器将会在内部保存这个子串,然后继续请求新的子串直到内部保存的子串匹配了一 个规则。如果没有规则可以匹配,解析器将会报出一个异常,这意味着文档是不合法的,包含着 一个语法错误。
规范(html5)把浏览器中的“web database”定义为一个完完全全的(虽然很轻)数据库。
图 1 浏览器主要组件 注释一下 Chrome 很重要,和大多数浏览器不同,它保持渲染引擎的多个实例--每个选项卡一 个,每个选项卡都是独立的进程。 我会为每个组件写一章。
组件间通信 Firefox 和 Chrome 都开发了一个专门的通信基本件。 这个会在专门的一章里讨论。
浏览器的高级结构
浏览器的主要结构如下: 1. 用户界面-包括地址栏、后退/前进按钮、书签菜单等。Every part of the browser display except
the main window where you see the requested page. 2. 浏览器引擎- 询问和操作渲染引擎的接口 3. 渲染引擎-负责展现所请求的内容,比如如果请求的是 html,它就负责解析 html 和 css 并且在
expression := term operation term operation := PLUS | MINUS term := INTEGER | expression 我们说过如果一种语言的语法是上下文无关语法的话,它就能被常用的解析器所解析。上下文无 关语法直观的定义是能够被 BNF 表示的语法,正式的定义可以去看 /wiki/Context-free_grammar。

紫鸟浏览器工作原理

紫鸟浏览器工作原理

紫鸟浏览器工作原理一、浏览器概述浏览器是一种用于访问互联网上的信息的应用程序,其主要功能是向用户呈现互联网上的各种资源,例如网页、图片、视频等。

在浏览器中,用户可以通过输入URL地址或搜索关键词来获取所需信息。

二、紫鸟浏览器简介紫鸟浏览器是一款国产的免费浏览器,其主要特点是轻巧快速、安全稳定。

紫鸟浏览器采用了多进程架构和内核分离技术,能够有效提升用户体验和安全性。

三、紫鸟浏览器工作原理1. 用户输入URL地址或搜索关键词当用户在紫鸟浏览器地址栏中输入URL地址或搜索关键词时,首先会经过输入检查和解析处理。

如果输入内容为URL地址,则会进行DNS 解析,获取对应的IP地址;如果输入内容为搜索关键词,则会将其发送给搜索引擎进行处理。

2. 网络请求与响应紫鸟浏览器使用HTTP协议来进行网络通信。

当用户请求某个资源时,紫鸟浏览器会向服务器发出HTTP请求,并等待服务器响应。

服务器收到请求后会进行处理,并返回相应的HTTP响应。

紫鸟浏览器接收到响应后会对其进行解析和渲染,最终将结果呈现给用户。

3. 渲染引擎紫鸟浏览器采用了Webkit作为其渲染引擎,Webkit是一种开源的渲染引擎,广泛应用于各种浏览器和移动设备中。

Webkit可以将HTML、CSS和JavaScript等网页元素转换成可视化的页面。

4. JavaScript引擎紫鸟浏览器使用V8作为其JavaScript引擎,V8是一种高性能的JavaScript引擎,由Google开发。

V8可以快速执行JavaScript代码,并提供了强大的内存管理功能。

5. 多进程架构紫鸟浏览器采用了多进程架构来提高用户体验和安全性。

具体来说,紫鸟浏览器包括主进程、渲染进程、插件进程和GPU进程等多个进程。

主进程负责协调各个子进程之间的通信和资源分配;渲染进程负责页面渲染;插件进程负责运行插件;GPU进程负责图形处理。

6. 内核分离技术紫鸟浏览器采用了内核分离技术,将渲染进程和JavaScript引擎进程分离出来,可以有效提升浏览器的稳定性和安全性。

浏览器工作原理和实践(一)——浏览器

浏览器工作原理和实践(一)——浏览器

浏览器⼯作原理和实践(⼀)——浏览器 《》是极客时间上的⼀个浏览器学习系列,在学习之后特在此做记录和总结。

⼀、Chrome架构1)线程和进程 Chrome打开⼀个页⾯会启动4个进程:⽹络进程、GPU进程、浏览器主进程和渲染进程。

⼀个进程就是⼀个程序的运⾏实例,启动⼀个程序的时候,操作系统会为该程序创建⼀块内存,⽤来存放代码、运⾏中的数据和⼀个执⾏任务的主线程,这样⼀个运⾏环境叫进程。

线程是依附于进程的,⽽进程中使⽤多线程并⾏处理能提升运算效率。

进程和线程之间的关系有以下 4 个特点: (1)进程中的任意⼀线程执⾏出错,都会导致整个进程的崩溃。

(2)线程之间共享进程中的数据。

(3)当⼀个进程关闭之后,操作系统会回收进程所占⽤的内存。

(4)进程之间的内容相互隔离。

2)Chrome进程架构 最新的 Chrome 浏览器包括:1 个浏览器(Browser)主进程、1 个 GPU 进程、1 个⽹络(NetWork)进程、多个渲染进程和多个插件进程,如下图所⽰。

(1)浏览器主进程:负责界⾯显⽰、⽤户交互、⼦进程管理,同时提供存储等功能。

(2)渲染进程:核⼼任务是将 HTML、CSS 和 JavaScript 转换为⽤户可以与之交互的⽹页,排版引擎 Blink 和 JavaScript 引擎 V8 都是运⾏在该进程中,默认情况下,Chrome 会为每个 Tab 标签创建⼀个渲染进程。

出于安全考虑,渲染进程都是运⾏在沙箱模式下。

(3)GPU进程:GPU 的使⽤初衷是为了实现 3D CSS 的效果,随后⽹页、Chrome 的 UI 界⾯都选择采⽤ GPU 来绘制,这使得 GPU 成为浏览器普遍的需求。

(4)⽹络进程:负责页⾯的⽹络资源加载,之前是作为⼀个模块运⾏在浏览器进程⾥⾯的。

(5)插件进程:负责插件的运⾏,因插件易崩溃,所以需要通过插件进程来隔离,以保证插件进程崩溃不会对浏览器和页⾯造成影响。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

从输入网址到显示页面:浏览器工作原理拆解分析本文将深入的研究当你输入一个网址的时候,后台到底发生了一件件什么样的事~1. 首先嘛,你得在浏览器里输入网址:2. 浏览器查找域名的IP地址导航的第一步是通过访问的域名找出其IP地址。

DNS查找过程如下:1.浏览器缓存–浏览器会缓存DNS记录一段时间。

有趣的是,操作系统没有告诉浏览器储存DNS记录的时间,这样不同浏览器会储存个自固定的一个时间(2分钟到30分钟不等)。

2.系统缓存–如果在浏览器缓存里没有找到需要的记录,浏览器会做一个系统调用(windows里是gethostbyname)。

这样便可获得系统缓存中的记录。

3.路由器缓存–接着,前面的查询请求发向路由器,它一般会有自己的DNS缓存。

4.ISP DNS 缓存–接下来要check的就是ISP缓存DNS的服务器。

在这一般都能找到相应的缓存记录。

5.递归搜索–你的ISP的DNS服务器从跟域名服务器开始进行递归搜索,从.com顶级域名服务器到Facebook的域名服务器。

一般DNS服务器的缓存中会有.co m域名服务器中的域名,所以到顶级服务器的匹配过程不是那么必要了。

DNS递归查找如下图所示:DNS有一点令人担忧,这就是像 或者这样的整个域名看上去只是对应一个单独的IP地址。

还好,有几种方法可以消除这个瓶颈:1. 循环DNS 是DNS查找时返回多个IP时的解决方案。

举例来说,Faceboo 实际上就对应了四个IP地址。

2. 负载平衡器是以一个特定IP地址进行侦听并将网络请求转发到集群服务器上的硬件设备。

一些大型的站点一般都会使用这种昂贵的高性能负载平衡器。

3. 地理DNS 根据用户所处的地理位置,通过把域名映射到多个不同的IP地址提高可扩展性。

这样不同的服务器不能够更新同步状态,但映射静态内容的话非常好。

4. Anycast是一个IP地址映射多个物理主机的路由技术。

美中不足,Anycast 与TCP协议适应的不是很好,所以很少应用在那些方案中。

大多数DNS服务器使用Anycast来获得高效低延迟的DNS查找。

3. 浏览器给web服务器发送一个HTTP请求因为像Facebook主页这样的动态页面,打开后在浏览器缓存中很快甚至马上就会过期,毫无疑问他们不能从中读取。

所以,浏览器将把一下请求发送到Facebook所在的服务器:GET / HTTP/1.1Accept: application/x-ms-application, image/jpeg, application/xaml+x ml, [...]User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; [...]Accept-Encoding: gzip, deflateConnection: Keep-AliveHost: Cookie: datr=1265876274-[...]; locale=en_US; lsd=WW[...]; c_user=210 1[...]GET 这个请求定义了要读取的URL:“/”。

浏览器自身定义(User-Agent头),和它希望接受什么类型的相应(Accept and Accept-Encoding头). Connection头要求服务器为了后边的请求不要关闭TCP连接。

请求中也包含浏览器存储的该域名的cookies。

可能你已经知道,在不同页面请求当中,cookies是与跟踪一个网站状态相匹配的键值。

这样cookies会存储登录用户名,服务器分配的密码和一些用户设置等。

Cookies会以文本文档形式存储在客户机里,每次请求时发送给服务器。

用来看原始HTTP请求及其相应的工具很多。

作者比较喜欢使用fiddler,当然也有像FireBug这样其他的工具。

这些软件在网站优化时会帮上很大忙。

除了获取请求,还有一种是发送请求,它常在提交表单用到。

发送请求通过UR L传递其参数(e.g.: /puzzle.aspx?id=85)。

发送请求在请求正文头之后发送其参数。

像“/”中的斜杠是至关重要的。

这种情况下,浏览器能安全的添加斜杠。

而像“http: ///folderOrFile”这样的地址,因为浏览器不清楚folderOrFile到底是文件夹还是文件,所以不能自动添加斜杠。

这时,浏览器就不加斜杠直接访问地址,服务器会响应一个重定向,结果造成一次不必要的握手。

4. facebook服务的永久重定向响应图中所示为Facebook服务器发回给浏览器的响应:HTTP/1.1 301 Moved PermanentlyCache-Control: private, no-store, no-cache, must-revalidate, post-ch eck=0,pre-check=0Expires: Sat, 01 Jan 2000 00:00:00 GMTlocetion: /P3P: CP="DSP LAW"Pragma: no-cacheSet-Cookie: made_write_conn=deleted; expires=Thu, 12-Feb-2009 05:09: 50 GMT;path=/; domain=; httponlyContent-Type: text/html; charset=utf-8X-Cnection: closeDate: Fri, 12 Feb 2010 05:09:51 GMTContent-Length: 0服务器给浏览器响应一个301永久重定向响应,这样浏览器就会访问“http://ww /” 而非“/”。

为什么服务器一定要重定向而不是直接发会用户想看的网页内容呢?这个问题有好多有意思的答案。

其中一个原因跟搜索引擎排名有关。

你看,如果一个页面有两个地址,就像htt p:/// 和/,搜索引擎会认为它们是两个网站,结果造成每一个的搜索链接都减少从而降低排名。

而搜索引擎知道301永久重定向是什么意思,这样就会把访问带www的和不带www的地址归到同一个网站排名下。

还有一个是用不同的地址会造成缓存友好性变差。

当一个页面有好几个名字时,它可能会在缓存里出现好几次。

5. 浏览器跟踪重定向地址现在,浏览器知道了“/”才是要访问的正确地址,所以它会发送另一个获取请求:GET / HTTP/1.1Accept: application/x-ms-application, image/jpeg, application/xaml+x ml, [...]Accept-Language: en-USUser-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64;[...]Accept-Encoding: gzip, deflateConnection: Keep-AliveCookie: lsd=XW[...]; c_user=21[...]; x-referer=[...]Host: 头信息以之前请求中的意义相同。

6. 服务器“处理”请求服务器接收到获取请求,然后处理并返回一个响应。

这表面上看起来是一个顺向的任务,但其实这中间发生了很多有意思的东西- 就像作者博客这样简单的网站,何况像facebook那样访问量大的网站呢!1.Web 服务器软件web服务器软件(像IIS和阿帕奇)接收到HTTP请求,然后确定执行什么请求处理来处理它。

请求处理就是一个能够读懂请求并且能生成HTML来进行响应的程序(像,PHP,RUBY...)。

举个最简单的例子,需求处理可以以映射网站地址结构的文件层次存储。

像htt p:///folder1/page1.aspx这个地址会映射/httpdocs/folder1/page1.aspx这个文件。

web服务器软件可以设置成为地址人工的对应请求处理,这样page1.a spx的发布地址就可以是/folder1/page1。

2.请求处理请求处理阅读请求及它的参数和cookies。

它会读取也可能更新一些数据,并讲数据存储在服务器上。

然后,需求处理会生成一个HTML响应。

所有动态网站都面临一个有意思的难点-如何存储数据。

小网站一半都会有一个SQL数据库来存储数据,存储大量数据和/或访问量大的网站不得不找一些办法把数据库分配到多台机器上。

解决方案有:sharding(基于主键值讲数据表分散到多个数据库中),复制,利用弱语义一致性的简化数据库。

委托工作给批处理是一个廉价保持数据更新的技术。

举例来讲,Fackbook得及时更新新闻feed,但数据支持下的“你可能认识的人”功能只需要每晚更新(作者猜测是这样的,改功能如何完善不得而知)。

批处理作业更新会导致一些不太重要的数据陈旧,但能使数据更新耕作更快更简洁。

7. 服务器发回一个HTML响应图中为服务器生成并返回的响应:HTTP/1.1 200 OKCache-Control: private, no-store, no-cache, must-revalidate, post-ch eck=0,pre-check=0Expires: Sat, 01 Jan 2000 00:00:00 GMTP3P: CP="DSP LAW"Pragma: no-cacheContent-Encoding: gzipContent-Type: text/html; charset=utf-8X-Cnection: closeTransfer-Encoding: chunkedDate: Fri, 12 Feb 2010 09:05:55 GMT2b3Tn@[...]整个响应大小为35kB,其中大部分在整理后以blob类型传输。

内容编码头告诉浏览器整个响应体用gzip算法进行压缩。

解压blob块后,你可以看到如下期望的HTML:"/TR/xhtml1/DTD/xhtml1-strict.dtd">lang="en" id="facebook" class=" no_js">...关于压缩,头信息说明了是否缓存这个页面,如果缓存的话如何去做,有什么c ookies要去设置(前面这个响应里没有这点)和隐私信息等等。

请注意报头中把Content-type设置为“text/html”。

报头让浏览器将该响应内容以HTML形式呈现,而不是以文件形式下载它。

浏览器会根据报头信息决定如何解释该响应,不过同时也会考虑像URL扩展内容等其他因素。

相关文档
最新文档