2015-04-10 2 views
0

Я очень новичок в серверах и узлах. Я создал очень простой httpserver и пытался напечатать количество соединений на консоли. Ниже приведен код для одной и той жеКлиент дважды отправляет запрос на сервер?

var count = 0; 
var http = require("http"); 
var server = http.createServer(function(request,response){ 
    response.writeHead(200, {"Content-Type": "text/html"}); 
    count++; 
    console.log('Count' + count); 
    response.end(count + ''); 
}); 

server.listen(8080); 
console.log("Server is listening"); 

После трех связи значение счетчика увеличивается ДО 6. Пожалуйста, дайте мне знать, почему есть приращение 2 счетчика для каждого запроса HTTP

ответ

3

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

Для защиты от этого, вы можете проверить request.url по определенному пути и применять свою логику только в том случае, если путь - это то, что вы ожидаете.

Вот один способ, которым Вы могли бы сделать это:

var count = 0; 
var http = require("http"); 
var server = http.createServer(function(request,response){ 
    if (request.url === "/") { 
     response.writeHead(200, {"Content-Type": "text/html"}); 
     count++; 
     console.log('Count' + count); 
     response.end(count + ''); 
    } else { 
     response.writeHead(404, {"Content-Type": "text/html"}); 
     response.write("Content not found"); 
     response.end(); 
    } 
}); 

server.listen(8080); 
console.log("Server is listening"); 
+0

Да, кажется, браузер запрашивает для «/» и «/favicon.ico». Не могли бы вы объяснить, почему это так? – rahulshr

+0

@tor - это соглашение о браузере, чтобы спросить сайт для изображения favicon.ico, которое браузер может отображать для представления сайта. Вы можете просто проверить значение 'request.url' и игнорировать все, что не является' '/' '. – jfriend00

+0

@tor - добавлен пример кода для моего ответа. – jfriend00

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