2015-11-20 2 views
5

Возможно ли использование Node.js и express для отказа от запроса по определенному маршруту? И.Е. не возвращать статус http или любые заголовки? Я хотел бы просто закрыть соединение.Запрос на удаление в node.js express

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

Я не уверен, просто интересно. Не возвращает ли «результат желаемого результата»? Это звучит логично - просто ничего не делайте с ответом. –

+0

Я не думаю, что возврат отклонит запрос клиента, все еще откладывается. – Justin

+0

Чтобы удалить соединение, вы должны ['.destroy()'] (https://nodejs.org/api/net.html#net_socket_destroy) ['.socket'] (https: // nodejs. org/api/http.html # http_message_socket), используемый запросом - 'req.socket.destroy()'. Это будет эмулировать «отключить», а не «таймаут», как вы упомянули в других комментариях. Если вы хотите продлить запрос на сервере на неопределенный срок, разрешите клиенту в конечном итоге выбрать тайм-аут, тогда 'return;' или просто пустой обработчик маршрута должен работать нормально. –

ответ

-1

Да, вы можете. Все, что вам нужно сделать, это вызвать метод res.end, необязательно, передать код состояния.

Используйте один из следующих методов:

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

Если вы хотите также установить заголовки, то вы бы использовать метод res.set. Ниже

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

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

Для получения дополнительной информации посмотрите здесь http://expressjs.com/api.html

+0

Я не хочу возвращать код состояния, хотя я хочу полностью отказаться от запроса. И.Е. имитировать таймаут http. – Justin

+0

Код статуса возврата 408, это статус тайм-аута. Когда вы вызываете res.end, вы завершаете обработку запроса. – Don

0

Вы можете сделать это там, где вы хотите, чтобы закрыть соединение: res.end()

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