Chrome浏览器在用户访问一个不存在的网址时,会重新发起一个请求?

时间:2022-09-30 23:58:18
今天偶然间发现Google Chrome浏览器在用户访问一个不存在的网址时,会重新发起一个请求:
socket = serverSocket.accept();
input = socket.getInputStream();
output = socket.getOutputStream();
Request request = new Request(input);
request.parse();
Response response = new Response(output);
response.setRequest(request);
response.sendStaticResource();

socket.close();


其中request.parse();方法如下:

StringBuffer request = new StringBuffer();
int i;
byte[] buffer = new byte[2048];

try {
i = input.read(buffer);
} catch (IOException e) {
e.printStackTrace();
i = -1;
}
for(int j = 0; j < i; j++){
request.append((char)buffer[j]);
}
System.out.println(request.toString());



请求URL为:http://127.0.0.1:8080/index.jsp
打印出HTTP请求信息如下:
GET /index.jsp HTTP/1.1
Host: 127.0.0.1:8080
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.162 Safari/535.19
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3


GET /favicon.ico HTTP/1.1
Host: 127.0.0.1:8080
Connection: keep-alive
Accept: */*
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.162 Safari/535.19
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3

我只发送了一个请求,怎么会出现两次请求呢,而且第二次请求的URI是 /favicon.ico,网上查了一下,Google的帮助文档是这样说的:
“如果您浏览到一个不存在的网址,Chrome 浏览器可能会将该网址发送给 Google,以便我们帮您查找所需网址。我们还会以汇总的方式使用此信息,以便为其他网络用户提供相应帮助(例如,告知他们该网站可能出现了问题)。了解关于停用针对导航错误的建议的详情。”

就算是Chrome浏览器会将该网址发送给 Google,但是请求的URI怎么会是 /favicon.ico。这个URI是一张图片,难道是如果请求的资源不存在时,Chrome浏览器会自动显示一张图片,但是我的浏览器中也没有显示相应的图片啊?这是神马情况?