VPN nie może wyłączyć CORS, zmienia odpowiedź
Nowy adres wyjściowy nie czyni dwóch źródeł takimi samymi. Przechwyć nagłówki odpowiedzi na obu ścieżkach i porównaj je, zanim obwinisz egzekwowanie CORS.
Zacznij od rozdzielenia dwóch rzeczy, które zmieniły się naraz: ścieżki sieciowej i egzekwowania przez przeglądarkę. VPN zmienia adres wyjściowy; nie zmienia źródła strony, które składa się ze schematu, hosta i portu. Jeśli żądanie teraz się udaje, coś w odpowiedzi się zmieniło albo zmieniło się samo żądanie. Ustalenie, co z tych dwóch, to całe śledztwo.
CORS to protokół nagłówków egzekwowany przez przeglądarkę, więc nic na ścieżce sieciowej nie może go wyłączyć.
Źródło to nie adres IP
Źródło to schemat, host i port. To nie adres, z którego wychodzą pakiety, i nie IP, które widzi serwer. Dlatego VPN może zmienić każdy obserwowalny adres, a źródło pozostawić identyczne. Przeglądarka porównuje Access-Control-Allow-Origin odpowiedzi ze źródłem strony, a adres wyjściowy nigdy nie trafia do tego porównania.
Więc rozszerzenie lub proxy, które wygląda na naprawiające błąd CORS, robi coś innego: przepisuje nagłówki albo kieruje żądanie tak, że nie jest już międzydomenowe. Żadna z tych rzeczy nie jest właściwością VPN.
Co przeglądarka naprawdę wysyła
Dla żądania międzydomenowego, które nie jest proste, przeglądarka najpierw wysyła preflight OPTIONS, niosący zamierzoną metodę i nagłówki. Serwer musi odpowiedzieć uprawnieniami, których udziela, a właściwe żądanie następuje tylko wtedy, gdy ta odpowiedź spełnia reguły. VPN zmienia ścieżkę, która niesie obie wymiany, i może zmienić to, co odpowiadają usługi pośrednie. Nie zmienia ciągu źródła ani wymogu preflight.
Klient wiersza poleceń zwykle nic z tego nie pokazuje. Może nie wysyłać nagłówka Origin, często pomija preflight i może nieść inne dane uwierzytelniające. Treść zwrócona do curl dowodzi, że serwer odpowiedział curl.
Znajdź odpowiedź, która się zmieniła
Porównaj rzeczywistą odpowiedź na każdej ścieżce, nie tylko kod stanu. Spójrz na nagłówki niosące uprawnienia CORS, typ treści, każde przekierowanie i to, czy wariant WAF lub CDN wytworzył inną stronę. Odmowa regionalna, przekierowanie uwierzytelniania lub strona błędu bez nagłówka uprawnień zawodzą w przeglądarce, choć wyglądają jak błąd CORS. To różnice ścieżki dostarczania i właśnie je trzeba udokumentować.
Przechwyć nagłówki odpowiedzi z obu ścieżek i porównaj je wiersz po wierszu. Jeśli jedyną różnicą jest brakujący Access-Control-Allow-Origin na jednej stronie błędu, znalazłeś przyczynę.
Napraw usługę, nie egzekwowanie
Gdy usługa jest twoja, wyraźnie podaj dozwolone źródła i funkcje żądania, a następnie czytaj błędy, które produkują jej frontend i pośrednicy. Jeśli tego nie zrobisz, wyślij właścicielowi usługi oczyszczone porównanie. Nigdy nie umieszczaj w tym raporcie plików cookie, nagłówków autoryzacji ani eksportów sesji, ponieważ to dane uwierzytelniające, które polityka ma chronić.
Unikaj rozszerzeń przeglądarki, które wyłączają CORS. Zmieniają granicę bezpieczeństwa, ukrywając różnicę w odpowiedzi, którą trzeba było wyjaśnić, i pozostawiają tę samą awarię wszystkim innym użytkownikom.
Zanotuj obie odpowiedzi, użyte źródło i przebytą ścieżkę. Ten zapis zamienia plotkę o VPN w błąd usługi.