2017-10-02 1 views
0

Jungs Ich bin neu in Node Js und dieses Verhalten ist mir fremd! Im folgenden Code-SnippetWarum wird die Callback-Funktion für jede Anfrage zweimal aufgerufen?

'use strict'; 
var http = require('http'); 
var numberOfRequests = 0; 
http.createServer(function (request, responce) { 
    console.log('Request number ' + numberOfRequests + ' received!'); 
    responce.writeHead(200); 
    responce.write("Here is responce to your request.."); 
    responce.end(); 
    numberOfRequests++; 
} 
).listen(8080); 
console.log('listening ...'); 

für jeden

localhost:8080 

Anruf bei Chrome, die App zweimal auf Konsole schreibt? E.Ich für einen einzigen Anruf 8080, druckt es aus:

Request number 0 received! 
Request number 1 received! 

ich Visual Studio bin mit diesem Knoten js App laufen.

+3

Öffnen Sie die Chrome-Entwicklungstools. Es ist wahrscheinlich eine Anfrage für das Favicon – zero298

+0

@ zero298 Sie haben Recht. das war es aber warum? Ich sende nur eine einfache Anfrage. Ich habe in meiner Anfrage nichts über favicon.ico erwähnt! –

+1

Genau das macht Chrome. Wenn Sie explizite Kontrolle über Anfragen haben möchten, können Sie Tools wie Curl oder Postman verwenden. – zero298

Antwort

1

Normalerweise werden zwei Anfragen für jede Seitenanforderung angezeigt, eine für die gewünschte Seite und eine für das Favicon für die Website. Dies wird von den meisten Browsern durchgeführt, es sei denn, auf der Seite befindet sich ein Meta-Tag, das den Browser anweist, keine Favicon-Ressource anzufordern. Wenn Sie dies in Ihrem Handler tun:

console.log(request.url) 

Das wird Ihnen wahrscheinlich zeigen, was vor sich geht. Im Allgemeinen möchten Sie keinen Webserver haben, auf dem Sie nie sehen, welche Ressource angefordert wird. Wenn Sie Ihre Logik auf einer bestimmten angeforderten Ressource basieren, z. B. /, können Sie andere Anforderungstypen wie das Favicon problemlos ignorieren.

Verwandte Themen