Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   Кк удалить заголовок из ответа? (https://javascript.ru/forum/node-js-io-js/61074-kk-udalit-zagolovok-iz-otveta.html)

headerquest 03.02.2016 11:44

Как удалить заголовок из ответа?
 
Конкретно -- Сonnection. Выставлять в null и undefined и "closed" не предлагать. Сторонние модули тоже не хотелось бы, надо штатными средствами.

Спасибо.

Max Power 03.02.2016 12:10

Подозреваю что хотите удалить Connection: keep-alive. Вот что говорит RFC 2616:

>HTTP/1.1 applications that do not support persistent connections MUST include the "close" connection option in every message.

В любом случае, то что нода выдает по умолчанию keep-alive в заголовке - это не просто так, а связано с ее поведением, так что это не просто вопрос удаления заголовка

headerquest 03.02.2016 12:13

Max Power,
мне это на 301 редирект нужно. А какой тут может быть keep-alive? Что касается close -- посмотрел щас, google не выдает его на 301. Это не спроста, я думаю

ЗЫ Хотя, проверил сейчас www.ya.ru, он выдает 302 и кееp-alive. В то же время www.yandex.ru, выдает 301 без connection, так же как и google. хз как правильно.

ЗЫЫ Правильно, наверное, все таки, 301 без connection, так как 302 семантически означает, вроде, "временно"

вопрос остается в силе.

Max Power 03.02.2016 12:41

Мне кажется что keep-alive не противоречит редиректу, не обязательно закрывать соединение, если послан заголовок редиректа.

В любом случае заголовок Connection связан с поведением веб-сервера, то есть если его просто вручную переписать, он перестанет соответствовать этому поведению. Вопрос в том - а надо ли менять это поведение...

headerquest 03.02.2016 13:00

Цитата:

Сообщение от Max Power
Мне кажется что keep-alive не противоречит редиректу

Но почему тогда google и yandex не отдают connection при 301-м редиректе? Там что дураки что-ли сидят?
Цитата:

Сообщение от Max Power
поведением веб-сервера

это *поведение* продиктовано просто неправильной архитектурой. К объекту response, насколько я понял, вообще нет прямого доступа. Видимо, все скроено в стиле "заплатка на заплатке", а теперь тривиально изменить ничего нельзя, поэтому оставили как есть. Обычне дело. Почему это дядя должен решать за меня, какие заголовки отдавать? Это нормально?
Цитата:

Сообщение от Max Power
то есть если его просто вручную переписать

мне не переписать надо, а удалить. Это возможно?

Max Power 03.02.2016 13:17

Nginx например редиректит с keep-alive, и никто не возмущается.

> HTTP/1.1 301 Moved Permanently
> Server: nginx/1.6.2 (Ubuntu)
> Date: Wed, 03 Feb 2016 10:09:29 GMT
> Content-Type: text/html
> Content-Length: 193
> Connection: keep-alive
> Location: .........

В теории браузер может по тому же соединению запросить то, куда указывает редирект, а если редирект на внешний ресурс - просто закрыть соединение. Проблемы нет.

Если все же хочется удалить - возможно нужно лезть глубже в кишки Ноды

headerquest 03.02.2016 13:30

Max Power,
Вроде разобрался.
Цитата:

При работе по HTTP 1.1 все соединения считаются постоянными, если не обозначено иное
нода отдает как раз 1.1, поэтому, заголовка c keep-alive там вообще не должно быть. Поэтому серьезные ресурсы и не отдают connection, видимо. Короче, можно оставить как есть, я думаю. Спасибо.


Часовой пояс GMT +3, время: 10:08.