Co trzeba zrozumieć, jest to, że podczas przeglądarek zrobić egzekwować zasady tego samego źródła (SPO), istnieją wyjątki, gdy SOP nie jest egzekwowane. Na przykład, jeśli masz stronę HTML - możesz wstawiać tagi, które wskazują na obrazy w dowolnej domenie. Dlatego SOP nie ma tutaj zastosowania, a Ty tworzysz żądanie HTTP GET dla pierwszego źródła dla obrazu.
Demo połączone z pracami, ponieważ używa mechanizmu działającego w podobny sposób. Mechanizm ten nazywa się JSONP - http://en.wikipedia.org/wiki/JSONP i sugeruję, abyś przeczytał wpis wiki i kilka innych postów na blogu. Zasadniczo JSONP dynamicznie wstrzykuje znaczniki <script>
, aby wysłać żądanie do dowolnej domeny (parametry żądania są dodawane jako parametry zapytania URL), ponieważ ta sama polityka pochodzenia nie ma zastosowania do tagów <script>
(ponieważ nie ma zastosowania do tagów ).
Innym sposobem wywoływania interfejsów REST API w innych domenach jest użycie mechanizmu współdzielenia zasobów (CORS) - http://en.wikipedia.org/wiki/Cross-origin_resource_sharing. Zasadniczo mechanizm ten umożliwia, że przeglądarki nie odrzucają żądania różnych źródeł, ale raczej proszą usługę docelową, jeśli chce zezwolić na konkretne żądanie połączenia. Usługa docelowa informuje przeglądarkę, że chce dopuszczać żądania różnych źródeł, wstawiając w odpowiedzi specjalne nagłówki HTTP:
Access-Control-Allow-Origin: http://www.example.com
Świetna odpowiedź, Iwan. Moje pytanie brzmi: czy w JavaScript, jakikolwiek REST API, który zużywa, wymaga mechanizmu takiego jak powyższe przykłady? Czy w celu ponownego sformułowania, wszyscy programiści REST API powinni wziąć pod uwagę kwestię Cross-Origin podczas ich opracowywania? – technophyle
@technophyle - tak, to prawda. Na zdalne żądania JavaScript w przeglądarce wpływa SOP, więc deweloperzy API powinni rozważyć, czy API ma być dostępny dla takich klientów. –