Pytanie Jak dodać niestandardowy nagłówek http?


Zamierzam dodać niestandardowe nagłówki HTTP do aplikacji Ruby on Rails, która jest obecnie hostowana na Heroku.


54
2018-05-20 16:32


pochodzenie




Odpowiedzi:


Posługiwać się:

response.headers['HEADER NAME'] = 'HEADER VALUE'

albo w określonej metodzie, albo w metodzie before_filter kontrolera aplikacji, w zależności od tego, czy jest to wymagane w konkretnej, czy we wszystkich odpowiedziach.

AKTUALIZACJA dla szyn 5 - 24 lutego 2018

Jak zauważył @BrentMatzelle w komentarzach, dla Szyny 5:

response.set_header('HEADER NAME', 'HEADER VALUE')

88
2018-05-20 16:40



Upewnij się, że ustawiona wartość jest ciągiem znaków, w przeciwnym razie pow spowoduje dziwne błędy - Avishai
nie działa dla mnie :( - ImranNaqvi
pracował dla mnie z rozwiązaniem @ magipire !! - viks
Aby dodać to do wszystkich akcji w kontrolerze, użyj a after_action. - Hendrik
UWAGA: Jest to stara metoda Railsowa do ustawiania nagłówków. The set-header metoda jest sposobem Rails 5+ na jej obsługę. - Brent Matzelle


W szynach 5 działa następujące rozwiązanie (w metodach działania)

response.set_header("Header-Name", "Header value")

Odniesienie: edgeapi


17
2017-12-24 07:42





W przypadku rails 4 ustaw nagłówki odpowiedzi w pliku application.rb lub odpowiednich plikach środowiska. Gdy to zrobisz, możesz zastąpić wartość nagłówka, gdziekolwiek potrzebujesz w kontrolerze. Zobacz to adres URL po więcej szczegółów.


7
2017-09-28 06:16





W Rails 3, po prostu

headers['Header-Name'] = 'header value'

działa w kontrolerach. To jest parzyste  zalecany sposób; według dokumentacja,

Odpowiedź jest głównie szczegółowością implementacji frameworka Ruby on Rails i nigdy nie powinna być używana bezpośrednio w kontrolerach. Kontrolery powinny stosować metody określone w ActionController::Base zamiast. Na przykład, jeśli chcesz ustawić typ MIME zawartości odpowiedzi HTTP, użyj ActionController::Base#headers zamiast Response#headers.

I jest to wciąż prawdziwe w Railsach 5.1.


5
2018-06-25 05:25





W szynach 4 działa następująco:

class API::V1::BaseController 
  after_action :set_version_header

  protected
    def set_version_header
        response.headers['X-ComanyName-Api-Version'] = 'V1'
    end
end

1
2018-02-21 08:17