2013-02-12 9 views
7

Pracuję nad aplikacją Railsową, która korzysta z połączenia SSL. Obecnie korzystam z zasobów stron trzecich, które są plikami js i css do implementacji mapy (OpenStreetMap). Próbowałem już zaimportować te zasoby (js i css) do mojej aplikacji, ale kod javascript próbuje uzyskać dostęp do zewnętrznego WMS przez HTTP.Google Chrome wymusza HTTPS

Problem polega na tym, że Google Chrome blokuje dostęp do zasobów stron trzecich z HTTP, gdy aplikacja jest w HTTPS.

Wyłączyłem SSL na niektórych stronach aplikacji i próbowałem wymusić HTTP lub HTTPS w taki sposób, w jaki pragnę.

Po tym blogu: http://www.simonecarletti.com/blog/2011/05/configuring-rails-3-https-ssl/ i to działa.

Ale kiedy zmuszam protokół HTTP do strony, na której te zasoby będą używane za pomocą Google Chrome, wymusza połączenie HTTPS powodujące nieskończoną pętlę.

Jeśli wyczyści pamięć podręczną Chrome (która już uzyskała dostęp do tej samej strony przy użyciu protokołu HTTPS), aby uzyskać do niej dostęp za pośrednictwem protokołu HTTP, działa. Ale jeśli uzyskałem dostęp do strony HTTPS i spróbowałem uzyskać dostęp przez HTTP, Chrome wymusza połączenie HTTPS, co skutkuje nieskończoną pętlą.

Pytanie brzmi: czy jest coś, co mogę ustawić w żądaniu, które powoduje, że Chrome akceptuje połączenie?

Pozdrowienia

Odpowiedz

10

Robiłem rozeznanie w tej sprawie, a okazuje się, że włączenie force_ssl = true na szynach 3 powoduje aplikację wysłać nagłówek TGV. Jest tu trochę informacji: How to disable HTTP Strict Transport Security?

Zasadniczo nagłówek HSTS mówi przeglądarce Chrome (i przeglądarce Firefox), aby uzyskać dostęp do witryny tylko przez HTTPS przez określony czas.

Więc ... mam dla ciebie teraz odpowiedź, że możesz wyczyścić swoje własne ustawienie HSTS, przechodząc do about:net-internals w przeglądarce Chrome i usuwając stan HSTS.

myślę odpowiedzi tutaj może pomóc: Rails: activating SSL support gets Chrome confused

+0

Dziękuję Skander M! Problem dotyczył HSTS. Rozwiązałem go za pomocą klejnotu SSL-rack, zmuszając HSTS do wygaśnięcia. Teraz mogę wyłączyć protokół HTTPS w żądanych adresach URL, nawet jeśli pamięć podręczna Chrome ma ustawiony wymuszenie HTTPS. pozdrowienia – user2064568