W kontekście technicznym Origin to unikalna kombinacja protokołu, hosta i portu. Przeglądarka wykorzystuje ją do rozpoznawania, z jakiej aplikacji pochodzi strona lub skrypt, oraz do wyznaczania granic bezpieczeństwa między aplikacjami internetowymi.
Czym jest Origin w przeglądarce?
Origin można traktować jako identyfikator źródła aplikacji internetowej. Dwa adresy mają ten sam Origin tylko wtedy, gdy zgadzają się wszystkie trzy jego elementy: protokół, host i port.
Ta zasada ma znaczenie dla bezpieczeństwa. Skrypt uruchomiony na jednej stronie nie może swobodnie odczytywać danych należących do innej aplikacji, jeśli jej Origin jest inny. Dzięki temu sama obecność obcej strony w przeglądarce nie daje jej automatycznego dostępu do poczty, panelu administracyjnego czy bankowości internetowej otwartej w innej karcie.
Z czego składa się Origin?
Każdy z trzech składników może zdecydować o tym, że dwa pozornie podobne adresy zostaną uznane za różne:
- Protokół – schemat użyty w adresie, na przykład
httpalbohttps. Zmiana protokołu oznacza zmianę Originu. - Host – nazwa domeny lub adres IP. Domena główna i subdomena są różnymi hostami, dlatego
example.comorazblog.example.commają różne Originy. - Port – numer portu, na przykład
80,443lub8080. Dwa adresy korzystające z różnych portów nie mają tego samego Originu.
Port może nie być zapisany w adresie. W takiej sytuacji przeglądarka korzysta z portu domyślnego dla danego protokołu, czyli zwykle 80 dla HTTP i 443 dla HTTPS.
Czy te adresy mają ten sam Origin?
Poniższe przykłady pokazują, jak porównywać adresy. Trzeba sprawdzić protokół, host oraz port, a nie tylko nazwę domeny widoczną w pasku adresu.
| URL A | URL B | Ten sam Origin? | Powód |
|---|---|---|---|
http://a.com |
https://a.com |
Nie | Różny protokół: HTTP i HTTPS. |
http://a.com |
http://a.com:8080 |
Nie | Różny port: domyślny dla HTTP i 8080. |
http://a.com |
http://blog.a.com |
Nie | Różny host. Subdomena jest odrębnym Originem. |
https://a.com |
https://a.com:443 |
Tak | Adresy wskazują ten sam protokół, host i port domyślny. |
Dlaczego Origin jest ważny dla bezpieczeństwa?
Origin stanowi podstawę polityki Same-Origin Policy, czyli SOP. To mechanizm przeglądarki, który ogranicza możliwość odczytywania danych między różnymi Originami. Przykładowo, kod JavaScript działający na https://example.com nie może bez dodatkowej zgody odczytać odpowiedzi z żądania wysłanego do https://inny-serwis.pl.
SOP nie blokuje wszystkich połączeń między stronami. Przeglądarka może pozwolić na określone osadzanie zasobów, takich jak obrazy, arkusze stylów czy skrypty, ale dostęp do treści odpowiedzi podlega dodatkowym ograniczeniom. W przypadku aplikacji, które muszą wymieniać dane między różnymi Originami, serwer może wyrazić zgodę za pomocą mechanizmu Cross-Origin Resource Sharing (CORS).
Najprostsza reguła brzmi: ten sam Origin występuje tylko wtedy, gdy zgadzają się protokół, host i port. Sama wspólna domena główna nie wystarcza, ponieważ subdomena również tworzy osobną granicę bezpieczeństwa.