8

我创建了一个简单的 Node.js 应用程序,它记录以控制request.url每个传入 HTTP 请求的电流。当我在 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请求。

4

4 回答 4

5

我认为这与 Chrome 中的这个错误有关,它会在每个请求上发送对 favicon 的请求。Firefox 和其他浏览器在第一次请求时执行此操作,但会将其缓存。

于 2013-02-07T14:15:13.480 回答
3

正如在另一个答案中发现的那样,它可能是由src图像或 iframe 上的空属性引起的。我遇到了同样的问题:当只刷新 1 个页面时,来自 Chromium 的完全相同的页面上的 4 个请求(而不是 favicon 上的)。就我而言,我发现这是由于标签上的空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 个请求。

于 2015-04-02T14:11:42.403 回答
0

src="#"在我的情况下,导致页面打开两次的 iframe

<iframe src="#" class="iframe lazyload" id="youtube-player-iframe" allow="autoplay"></iframe>
于 2021-07-07T15:38:20.370 回答
0

注意chrome上的萤火虫灯扩展..那是我的问题

于 2020-04-03T15:42:02.597 回答