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瀏覽器會自動顯示一張圖片,但是我的瀏覽器中也沒有顯示相應的圖片啊?這是神馬情況?