我创建了一个简单的Node.js应用程序,该应用程序会记录每个传入HTTP请求的当前request.url
。当我在Mac OS X ML上刷新Chrome页面时,我会收到两个同一页面的请求。的为什么吗
相比之下,当我使用 curl 并请求同一页面时,我只收到一个请求。如果我在Safari中刷新页面,则同一个请求。
为什么Chrome会针对同一页面发送两个请求?
修改:我查看了request.headers
,发现了一个区别:accept
标题。
这是第一个请求的标头。请注意,它接受特定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=' }
这是第二个请求。这次接受所有内容。
{ host: 'www.pulsr.local:1337',
connection: 'keep-alive',
'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: '*/*',
'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=VGWRSG9zIokHjA2vLa1b+/fUqu8=; PULSRSESSID=dsGxP494UxJueit2/u79AFiM5fw=' }
修改2 :我已查看并看到这两个请求都是GET
次请求。
答案 0 :(得分:3)
我认为这与Chrome中的bug有关,它会在每次请求时发送对favicon的请求。 Firefox和其他浏览器会在第一次请求时执行此操作,但会对其进行缓存。
答案 1 :(得分:1)
在另一个answer中找到,可能是由图片或iframe上的空src
属性引起的。我遇到了同样的问题:Chromium在完全相同的页面上有4个请求 - 而不是在favicon上 - 只做了1页刷新。在我的情况下,我发现这是由href
标记上的空link
属性引起的:
<link rel="shortcut icon" href="" />
<link rel="icon" type="image/x-icon" href="" />
<link rel="icon" type="image/png" href="" />
因此,我的页面重新加载1请求,以及上述3个链接中的每一个的1个请求。
答案 2 :(得分:0)
请注意Chrome ..上的萤火虫灯扩展名,这是我的问题
答案 3 :(得分:0)
就我而言,带有 src="#"
的 iframe 导致页面打开两次
<iframe src="#" class="iframe lazyload" id="youtube-player-iframe" allow="autoplay"></iframe>