Виноград - Как удалить заголовки из ответа?
Я хочу удалить некоторые заголовки, которые мой веб-сервер вводит в ответ заголовка, но не дает возможности удалить
Я вижу только вспомогательные функции для добавления заголовков, но не могу удалить их в Grape, и я не могу найти переменную, в которой содержатся заголовки.
Я специально хочу раздетьсяX-Powered-By
который вводится моим сервером Passenger, кажется, что пассажир предоставляет только возможность удалить номер версии, но не возможность удалить его полностью... что кажется небезопасным...
я хотел бы сделать это в моемbefore
блокировать
before do
## I see i can easily add headers, but not remove
header 'X-Robots-Tag', 'noindex'
## how do I remove headers here?
## ...
end
## ... some routes
get '/' do
## ...
end
Многие библиотеки предоставляют возможность удалять заголовки, например:
ExpressJS
app.use(function (req, res, next) {
res.header('Pragma', 'no-cache');
res.removeHeader('Pragma');
next();
});
Рельсы
response.headers['Connection'] = 'Closed'
remove_keys = %w(X-Runtime Cache-Control Server Etag Set-Cookie)
response.headers.delete_if{|key| remove_keys.include? key}
1 ответ
Хотя, на мой взгляд, это немного неудобно, документы показывают, что вы можете удалить заголовок, просто передав ключ, а не значение (или передав значение какnil
)
Для вашего примера:
before do
## I see i can easily add headers, but not remove
header 'X-Robots-Tag', 'noindex'
## how do I remove headers here?
header 'X-Powered-By'
end
Я предполагаю, что концепция заключается в том, что заголовок, для которого задано не значение, на самом деле вовсе не является заголовком.