2015-11-20 6 views
5

Ist es möglich, mit Node.js und Express eine Anfrage für bestimmte Route zu löschen? I.E. nicht einen http-Status oder irgendwelche Überschriften zurückgeben? Ich möchte nur die Verbindung schließen.Drop-Anfrage in node.js express

app.get('/drop', function(req, res) { 
    //how to drop the request here 
}); 
+1

Ich bin nicht sicher, nur fragen. Liefert '' zurück'' nicht das gewünschte Ergebnis? Es klingt logisch - tun Sie einfach nichts mit der Antwort. –

+0

Ich glaube nicht, Rückkehr wird die Client-Anfrage fallen lassen, immer noch. – Justin

+0

Um die Verbindung zu trennen, sollten Sie ['.destroy()'] (https://nodejs.org/api/net.html#net_socket_destroy) das ['.socket'] (https: // nodejs. org/api/http.html # http_message_socket), die von der Anfrage verwendet wird - 'req.socket.destroy()'. Dies emuliert eine "Trennung" statt einer "Zeitüberschreitung", wie Sie in anderen Kommentaren erwähnt haben. Wenn Sie die Anforderung auf dem Server unbegrenzt verlängern möchten und der Client dann eventuell eine Zeitüberschreitung auswählen möchte, sollte 'return;' oder nur ein leerer Routen-Handler funktionieren. –

Antwort

-1

Ja, Sie können. Sie müssen lediglich die res.end-Methode aufrufen und den Statuscode übergeben.

Verwenden Sie eine der folgenden Methoden:

res.end(); 
res.status(404).end(); 

Wenn Sie die Header auch setzen wollten, dann würden Sie die res.set Methode verwenden. Siehe unten

res.set('Content-Type', 'text/plain'); 

res.set({ 
    'Content-Type': 'text/plain', 
    'Content-Length': '123', 
    'ETag': '12345' 
}) 

Details sehen hier haben http://expressjs.com/api.html

+0

Ich möchte jedoch keinen Statuscode zurückgeben, ich möchte die Anfrage vollständig löschen. I.E. simulieren http-Timeout. – Justin

+0

Geben Sie den Statuscode 408 zurück, das ist ein Timeout-Status. Wenn Sie res.end aufrufen, beenden Sie die Anfrageverarbeitung. – Don

0

Sie dies tun könnte, wo Sie die Verbindung schließen wollen: res.end()