2016-09-15 21 views
5

Mam dwie strony hostowane na a.example.com i b.example. Każda strona internetowa zawiera skrypt ze znacznikiem <script>, hostowany w innej domenie i obsługiwany z poprawnymi nagłówkami CORS.Nagłówki żądania wstępnego sprawdzania referencji i źródła w Safari nie zmieniają się, gdy użytkownik nawiguje

W pewnym momencie użytkownik przechodzi od a.example.com do b.example.com.

Safari ma tu dziwne zachowanie: nagłówki w prefligtu życzenie referrer i origin są wypełnione a.example.com, dzięki czemu serwer wysyłający złą wartość Access-Control-Allow-Origin (a więc skrypt może nie zostać zrealizowane).

Czy istnieje sposób zmuszenia przeglądarki Safari do wysłania prawidłowego nagłówka origin w tego rodzaju scenariuszu?

+2

Jeśli to, co opisano w pytaniu, jest poprawne, wydaje się, że jest to zły błąd w Safari, który powinien zostać zgłoszony, a nie po prostu przepracowany. – sideshowbarker

+0

Czy mógłbyś dodać pełny zrzut nagłówków otrzymany i wysłany na żądanie do skryptu? Jeśli nie dla znalezienia potencjalnego błędu użytkowania, przynajmniej w celu umożliwienia replikacji? I ** w jaki sposób ** nawiguje użytkownik? Przekierowanie po stronie serwera lub po stronie klienta? – Ext3h

Odpowiedz

1

Czy zasady dotyczące pamięci podręcznej dla skryptu obejmują Vary: Origin?

Odpowiednio, czy jest rzeczywiście druga prośba po przejściu do b.example.com?

Jeśli nie, jest szansa, że ​​Safari faktycznie obsługuje skrypt z pamięci podręcznej - pomimo zakazu dostępu do zasobu przez zasady Access-Control-Allow-Origin. Co jest zgodnym zachowaniem, jeśli zasady dotyczące pamięci podręcznej nie są poprawnie skonfigurowane.

+0

Dzięki @ ext3h. Zmieniono nagłówek poprawnie, więc uważam, że to nie jest powód. –

0

Wyglądało na to, że to błąd Safari.

Problem nie może być odtworzony w Safari 10.0. To repro tylko w Safari 9.1.1/9.1.3.