2017-01-16 7 views
-1

Я попытался создать простой API. Если у кого-то/что-то есть вопросы:Почему узел слышит два запроса? (Favicon)

myIP:port/query 

Это должно послужить некоторым результатом. Однако, я заметил, что (по крайней мере), когда запрос выполняется браузером (Chrome), сервер получает два запроса. Если сервер просто настроен следующим образом:

http.createServer(function (request,result) { 
    console.log(request.url); 
    handleRequest(request,result); 
}).listen(3000, '0.0.0.0'); 

Он печатает два запроса URLs:

  • /запрос
  • /favicon.ico

Я полагаю, что это означает что запрашивающий клиент автоматически рисует дополнительный запрос, надеющийся загрузить значок, а также фактическую страницу.

  • Это предположение верно?

  • Есть ли что-нибудь, что я могу сделать, сделав запрос, чтобы предотвратить это? Является ли это управляемым хромом или это также произойдет, если я запрошу страницу с помощью ajax?

  • Какова наилучшая практика на стороне сервера для фильтрации запроса favicon с минимальными затратами усилий на сервере?

+0

Вы ... кажется, уже знаете, почему есть два запроса, очевидное решение - либо игнорировать запрос favicon, либо любую ошибку, вызванную им, или заставить сервер отвечать на него. –

+0

Это не касается моего вопроса. – COMisHARD

+0

В чем же ваш вопрос? Если вы ищете «лучшие практики», вы попадаете в неправильное семейство сайтов. –

ответ

0
  1. Ваше предположение верно. Большинство браузеров при первом посещении веб-сайта выдает GET /favicon.ico, если в заголовке тела HTML нет значка, указанного как <link rel="icon" ... />.
  2. Нет, это функция, реализованная на стороне клиента (браузера). Вы ничего не можете сделать на стороне сервера, чтобы предотвратить это поведение. Браузер не сделает дополнительный запрос к /favicon.ico, если запрос сделан через AJAX, но вполне вероятно, что браузер уже сделал этот запрос к этому времени (вы должны загрузить страницу для выполнения запроса AJAX).
  3. Насколько я знаю, нет «лучших практик» на стороне сервера для уменьшения количества этих запросов. Тем не менее, вы можете изменить шаблон (или файл HTML), который вы обслуживаете для клиента, явно включив в заголовок документа заявление <link ref="icon" ... />.

 Смежные вопросы

  • Нет связанных вопросов^_^