一个发送请求通过URL传递其参数(eg.:)

日期: 栏目:文章分享 浏览:789 评论:0

除了get请求之外,还有一个send请求,常用于提交表单。通过 URL 发送一个传递其参数的请求(例如:)。发送请求在请求正文标头之后发送其参数。

像“”这样的斜线是至关重要的。在这种情况下,浏览器可以安全地添加斜杠。而像“”这样的地址不能自动加斜杠,因为浏览器不知道是文件夹还是文件。这时候浏览器直接访问不带斜线的地址,服务器响应重定向,导致不必要的握手。

4. 来自服务的永久重定向响应

该图显示了服务器发送回浏览器的响应:

HTTP/1.1 301 Moved Permanently
 Cache-Control: private, no-store, no-cache, must-revalidate, post-check=0,
 pre-check=0
 Expires: Sat, 01 Jan 2000 00:00:00 GMT
 Location: http://www.facebook.com/
 P3P: CP="DSP LAW"
 Pragma: no-cache
 Set-Cookie: made_write_conn=deleted; expires=Thu, 12-Feb-2009 05:09:50 GMT;
 path=/; domain=.facebook.com; httponly
 Content-Type: text/html; charset=utf-8
 X-Cnection: close
 Date: Fri, 12 Feb 2010 05:09:51 GMT
 Content-Length: 0

服务器以 301 永久重定向响应响应浏览器,使浏览器访问“”而不是“”。

为什么服务器要重定向而不是直接发送用户想看的网页内容?这个问题有很多有趣的答案。

原因之一与搜索引擎排名有关。你看,如果一个页面有两个地址,比如 和 ,搜索引擎会认为它们是两个网站,结果每个的搜索链接更少,排名也更低。并且搜索引擎知道 301 永久重定向的含义,因此他们会将访问带有 www 和不带 www 的地址分配到相同的网站排名。

另一个是使用不同的地址会导致缓存友好性差。当一个页面有多个名称时,它可能会多次出现在缓存中。

5. 浏览器跟踪重定向地址

现在,浏览器知道 "" 是要访问的正确地址,所以它发送另一个 get 请求:

GET http://www.facebook.com/ HTTP/1.1
 Accept: application/x-ms-application, image/jpeg, application/xaml+xml, [...]
 Accept-Language: en-US
 User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; [...]
 Accept-Encoding: gzip, deflate
 Connection: Keep-Alive
 Cookie: lsd=XW[...]; c_user=21[...]; x-referer=[...]
 Host: www.facebook.com

标头信息与前一个请求中的含义相同。

6. 服务器“处理”请求

服务器接收到 get 请求,对其进行处理,然后返回响应。

表面上看,这似乎是一个定向任务浏览器怎么修改dns,但实际上中间发生了很多有趣的事情——一个像作者博客这样简单的网站,更何况是这样一个流量很大的网站!

所有动态网站都面临一个有趣的难题——如何存储数据。一半的小型站点将拥有一个 SQL 数据库来存储其数据,而存储大量数据和/或具有大量流量的站点必须找到某种方法将数据库分布在多台机器上。解决方案包括:(根据主键值将数据表分散到多个数据库中)、复制、使用弱语义一致性的简化数据库。

将工作委派给批处理是一种保持数据更新的廉价技术。比如新闻提要需要及时更新,而数据支持的“你可能认识的人”功能只需要每晚更新一次(笔者猜测是这样,如何改进功能呢?未知)。批量作业更新会导致一些不太重要的数据变得陈旧,但会使数据更新农业更快、更干净。

7. 服务器发回一个 HTML 响应

下图展示了服务器生成并返回的响应:

HTTP/1.1 200 OK
 Cache-Control: private, no-store, no-cache, must-revalidate, post-check=0,
 pre-check=0
 Expires: Sat, 01 Jan 2000 00:00:00 GMT
 P3P: CP="DSP LAW"
 Pragma: no-cache
 Content-Encoding: gzip
 Content-Type: text/html; charset=utf-8
 X-Cnection: close
 Transfer-Encoding: chunked
 Date: Fri, 12 Feb 2010 09:05:55 GMT
 
 2b3Tn@[...]

整个响应大小为 35kB,其中大部分在排序后以 blob 形式传输。

uc浏览其器下载_浏览器怎么修改dns_修改dns浏览外国网站

- 标头告诉浏览器使用 gzip 算法压缩整个响应正文。解压 blob 块后,您可以看到预期的 HTML,如下所示:


 
 
 
 
 ...

关于压缩,表示是否缓存页面,如果缓存了怎么做,设置什么(没有在之前的响应中)和隐私信息等。

请注意,标头中的 -type 设置为“text/html”。标头告诉浏览器将响应内容呈现为 HTML,而不是将其下载为文件。浏览器根据标头信息决定如何解释响应,但也会考虑其他因素,例如 URL 扩展的内容。

8. 浏览器开始显示 HTML

在浏览器完全接受整个 HTML 文档之前,它已经开始显示这个页面:

9. 浏览器发送以获取嵌入在 HTML 中的对象

浏览器怎么修改dns_修改dns浏览外国网站_uc浏览其器下载

当浏览器显示 HTML 时,它会注意到需要获取其他地址内容的标签。此时,浏览器将发送获取请求以检索文件。

以下是我们在访问时需要重新获取的一些 URL:

这些地址会经历类似于 HTML 读取的过程。所以浏览器会在 DNS 中查找这些域,发送请求,重定向等……

但与动态页面不同的是,静态文件允许浏览器缓存它们。有些文件可能不需要与服务器通信,而是直接从缓存中读取。服务器的响应包括有关静态文件保留多长时间的信息,因此浏览器知道将它们缓存多长时间。此外,每个响应可能包含一个 ETag 标头(请求变量的实体值),其作用类似于版本号,如果浏览器观察到文件的版本 ETag 信息已经存在,它会立即停止文件的传输。

猜猜地址中的“”代表什么?聪明的答案是“内容交付网络”。使用内容交付网络 (CDN) 分发静态文件,如图像、CSS 表格和文件。因此,这些文件将备份在全球许多 CDN 的数据中心中。

静态内容通常代表网站的带宽,也可以通过 CDN 轻松复制。网站通常使用第三方 CDN。例如,静态文件由最大的 CDN 提供商托管。

例如,当您尝试 ping 时,您可能会收到来自服务器的响应。有趣的是,当你再次 ping 相同时,响应的服务器可能不同,这表明后台的负载均衡正在工作。

10. 浏览器发送异步(AJAX)请求

在Web2.0伟大精神的指引下,页面显示后客户端仍然与服务器保持联系。

以聊天功能为例,它与服务器保持联系以更新您的亮灰色朋友的状态。为了更新这些头像的好友状态,浏览器中执行的代码会向服务器发送一个异步请求。这个异步请求被发送到一个特定的地址,它是一个以编程方式构造的get或send请求。仍然在此示例中,客户端发送发布请求以获取有关您的哪些朋友在线的状态信息。

说起这种模式浏览器怎么修改dns,就不得不说“AJAX”——“异步和XML”,虽然没有明确的原因为什么服务器以XML格式响应。作为另一个示例,对于异步请求,会返回一些代码片段。

除其他外,此工具允许您查看浏览器发送的异步请求。实际上,您不仅可以被动地观看这些请求,还可以主动修改并重新发送它们。对于得分的网络游戏开发者来说,如此容易被AJAX请求所欺骗,真是令人沮丧。(当然,不要这样骗人~)

聊天功能提供了一个关于 AJAX 问题的有趣示例:将数据从服务器推送到客户端。由于 HTTP 是一种请求-响应协议,聊天服务器无法向客户端发送新消息。相反,客户端必须每隔几秒钟轮询一次服务器以查看它是否有新消息。

当这些情况发生时,长轮询是一种减少服务器负载的有趣技术。如果服务器在轮询时没有新消息,它会忽略客户端。当超时前收到来自客户端的新消息时,服务器会找到未完成的请求,并将新消息作为响应返回给客户端。

原版的:

标签:

评论留言

我要留言

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。发布前请先查看评论规则:点我查看