Виноград - Как удалить заголовки из ответа?

Я хочу удалить некоторые заголовки, которые мой веб-сервер вводит в ответ заголовка, но не дает возможности удалить

Я вижу только вспомогательные функции для добавления заголовков, но не могу удалить их в 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

Я предполагаю, что концепция заключается в том, что заголовок, для которого задано не значение, на самом деле вовсе не является заголовком.

Другие вопросы по тегам