Je cherche à ajouter des en-têtes http personnalisés à une application Ruby on Rails actuellement hébergée sur Heroku).
Utilisation:
response.headers['HEADER NAME'] = 'HEADER VALUE'
soit dans une méthode spécifique, soit dans une méthode before_filter de votre contrôleur d'application selon que vous avez besoin que cela soit ajouté dans une réponse spécifique ou à toutes vos réponses.
Comme indiqué par @BrentMatzelle dans les commentaires, pour Rails 5 :
response.set_header('HEADER NAME', 'HEADER VALUE')
Dans Rails 5, la solution suivante fonctionne (dans les méthodes d'action)
response.set_header("Header-Name", "Header value")
Référence: edgeapi
Dans Rails 4, définissez les en-têtes de réponse dans le fichier application.rb ou les fichiers d'environnement respectifs. Une fois que vous avez fait cela, vous pouvez remplacer la valeur d'en-tête où vous le souhaitez dans le contrôleur. Reportez-vous à cette rl pour plus de détails.
Dans Rails 3 ou plus, simplement
headers['Header-Name'] = 'header value'
fonctionne dans les contrôleurs. C'est même la manière recommandée; selon la documentation ,
La réponse est principalement un Ruby on Rails détail d'implémentation du framework, et ne doit jamais être utilisé directement dans les contrôleurs. Les contrôleurs doivent utiliser les méthodes définies dans
ActionController::Base
au lieu. Par exemple, si vous souhaitez définir le type MIME du contenu de la réponse HTTP, utilisezActionController::Base#headers
au lieu deResponse#headers
.
Dans Rails 4 fonctionne comme suit:
class API::V1::BaseController
after_action :set_version_header
protected
def set_version_header
response.headers['X-ComanyName-Api-Version'] = 'V1'
end
end