2013-07-15 12 views
9

- moja aplikacja szyny wyrzuciła wyjątek ze względu na wyjątek ActionView::MissingTemplate. Stało się tak, ponieważ żądanie miało nagłówek http ACCEPT o wartości : */*. Aplikacja nie może znaleźć szablonu dla tego formatu (co jest tym, czego oczekuję). Agent użytkownika został ustawiony na Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36.Żądanie Railsów z nagłówkiem HTTP_ACCEPT `: */*`

Jestem ciekawy (i trochę zaniepokojony), co to oznacza. Czy jest to problem z szynami, problemem z moją aplikacją lub wektorem ataku? Widziałem odpowiedzi na podobne pytania (np. Ruby on Rails and strange HTTP_ACCEPT header from PSP), które zaproponowały uratowanie tych wyjątków i odpowiedź w formacie ustawionym na HTML. Jednak przed użyciem tego podejścia chciałbym teraz, jeśli : */* jest akceptowalną wartością dla ACCEPT i która przeglądarka ustawiłaby go w ten sposób.

Jestem na szynach 3.2.13.

+0

Witam, mam taki sam problem w aplikacji produkcyjnej. Wciąż otrzymuję żądanie z nagłówkiem accept: "/ *". W moim wystąpieniu errbit wyświetla następujące przeglądarki: ** Chrome 27.0.1453.116 ** (Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, jak Gecko) Chrome/27.0.1453.116 Safari/537.36) ** Internet Explorer 7.0 ** (Mozilla/4.0 (zgodny, MSIE 7.0, Windows NT 5.1, .NET CLR 1.0.3705, .NET CLR 1.1.4322, Media Center PC 4.0)) ** Eksploruj ** (Przeglądaj 6.0). Czy znalazłeś jakieś rozwiązanie? –

+1

Poprosiłem o tracker problemów szyn (https://github.com/rails/rails/issues/11704) i wygląda na to, że ten nagłówek jest nieprawidłowy zgodnie ze specyfikacją. Możesz zignorować te nieprawidłowe nagłówki lub uratować je za pomocą oprogramowania pośredniego i ustawić format na html. – fabi

Odpowiedz

4

To znany i starożytny, bug w typie MIME parsera Rails - patrz this bug report szczegóły. Obejścia istnieją, ale poprawka byłaby lepsza!

+0

Dzięki temu w raporcie o błędzie znajduje się wiele interesujących informacji, a także kilka możliwych obejść. Postanowiłem nic z tym zrobić, ponieważ zdarzyło się to tylko raz dla mnie. – fabi

+1

Ratowanie za pomocą 'request.format =" html "' jest dobrym rozwiązaniem - znacznie lepiej jest pokazać stronę błędu! –

+1

Myślę, że zostało to naprawione w najnowszych Railsach. –

0

Prawdopodobnie masz błędną kolejność w bloku respond_to, spróbuj dodać tę z szablonem jako pierwszą. Na przykład, jeśli chcesz html domyślnie:

respond_to do |format| 
    format.html 
    format.js 
end 
Powiązane problemy