Http 为什么浏览器在';他恢复精神了吗?
我已经创建了一个简单的Node.js应用程序,它可以为每个传入的HTTP请求记录当前的Http 为什么浏览器在';他恢复精神了吗?,http,google-chrome,networking,browser,request,Http,Google Chrome,Networking,Browser,Request,我已经创建了一个简单的Node.js应用程序,它可以为每个传入的HTTP请求记录当前的request.url。当我在Mac OS X ML上用Chrome刷新页面时,我收到两个对同一页面的请求为什么? 相比之下,当我使用curl并请求相同的页面时,我只收到一个请求。如果我在Safari中刷新页面,同样的一个请求 为什么Chrome会对同一页面发送两个请求? 编辑:我查看了请求.headers并发现了一个区别:接受头 这是第一个请求的标题。注意,它接受一个特定MIME的列表 { host: 'ww
request.url
。当我在Mac OS X ML上用Chrome刷新页面时,我收到两个对同一页面的请求为什么?
相比之下,当我使用curl并请求相同的页面时,我只收到一个请求。如果我在Safari中刷新页面,同样的一个请求
为什么Chrome会对同一页面发送两个请求?
编辑:我查看了请求.headers
并发现了一个区别:接受头
这是第一个请求的标题。注意,它接受一个特定MIME的列表
{ host: 'www.pulsr.local:1337',
connection: 'keep-alive',
'cache-control': 'max-age=0',
accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17',
'accept-encoding': 'gzip,deflate,sdch',
'accept-language': 'en-US,en;q=0.8',
'accept-charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
cookie: 'PULSRSESSID=BBtDAWMVgbQZ8lXA6wv4Wg/vwwI=; PULSRSESSID=dsGxP494UxJueit2/u79AFiM5fw=' }
这是第二个请求。这一次,它接受一切
编辑2:我已经检查并看到这两个请求都是GET
请求。我认为这与Chrome有关,Chrome会根据每个请求发送favicon请求。Firefox和其他浏览器会在第一次请求时执行此操作,但会将其缓存。在另一个浏览器中,这可能是由于图像或iFrame上的空src
属性造成的。我也有同样的问题:当只刷新一页时,Chromium在完全相同的页面上发出了4个请求,而不是favicon。在我的例子中,我发现这是由于链接
标签上的href
属性为空:
<link rel="shortcut icon" href="" />
<link rel="icon" type="image/x-icon" href="" />
<link rel="icon" type="image/png" href="" />
因此,1个请求重新加载我的页面,以及1个请求以上3个链接中的每一个。请注意chrome上的firebug light扩展。。这是我的问题很好的猜测,但我已经检查过,在第一个请求中,它发送了3个请求(我提到的2个+1用于favicon)。在那之后,每个页面只有2个请求。最终,我倾向于相信这个错误是原因。我知道这已经有4年了,但你刚刚救了我的命!我怎么也想不到!
<link rel="shortcut icon" href="" />
<link rel="icon" type="image/x-icon" href="" />
<link rel="icon" type="image/png" href="" />