Próbuję zezwolić na dostęp do każdej poddomeny w mojej witrynie, aby umożliwić wywoływanie krzyżowych subdomen AJAX. Czy istnieje sposób, aby określić wszystkie subdomeny witryny jak *.example.com
lub alternatywnie, dlaczego nie po pracy, gdy mam więcej niż jedną domenę Wystawione:Określ wiele subdomen z kontrolą dostępu Pochodzenie
header('Access-Control-Allow-Origin: http://api.example.com http://www.example.com');
Przeczytałem poprzez następujące pytanie, które wydaje się być podobny , jeśli nie taki sam jak ten, inny niż fakt, że chcę mieć dostęp do subdomen, a ten odnosi się do domen ogólnych.
Access-Control-Allow-Origin Multiple Origin Domains?
Jeśli powyższe pytanie jest rozwiązanie tego problemu, to jak jestem w stanie odzyskać pochodzenie z nagłówka. Wygląda na to, że $ _SERVER ['HTTP_ORIGIN'] jest bardzo niewiarygodny i nie ma nawet przeglądarki. Muszę być w stanie zobaczyć pochodzenie w dowolnej przeglądarce, która może pokazać błąd podczas próby wysłania wywołania AJAX za pomocą javascript.
Jak już powiedziałeś, pierwsza część Twojego pytania została podana w linku. Odnośnie drugiego pytania: jeśli przeglądarka próbuje połączenia Ajax, które jest zabronione przez zasady dotyczące domen krzyżowych, żądanie zakończy się niepowodzeniem i nie dotrze do serwera w ogóle. Błąd będzie musiał być obsługiwany w przeglądarce. –
Jestem świadomy, że otrzymam błąd, ale ten błąd zostanie dostarczony po próbie połączenia się z zewnętrznym plikiem. Jeśli plik go odrzuci, zostanie zgłoszony błąd. Jeśli ustawię nagłówek, aby umożliwić dostęp do wszystkich, to będzie działać, ale jest to dla mnie zbyt otwarte, dlatego chciałbym ustawić go jako odpowiadający początkowi żądania. Dlatego chciałbym wiedzieć, jak uzyskać pochodzenie żądania za pomocą PHP. –
Czy możesz wyjaśnić, co masz na myśli przez "$ _SERVER [" HTTP_ORIGIN '] jest bardzo niewiarygodne, a nawet nie przeglądać "? $ _SERVER ['HTTP_ORIGIN'] jest wartością po stronie serwera, która nie zostanie wykonana w przeglądarce. – monsur