VPN не можа адключыць CORS, ён змяняе адказ
Новы адрас выхаду не робіць два паходжанні аднолькавымі. Запішыце загалоўкі адказу на абодвух шляхах і параўнайце іх, перш чым вінаваціць CORS.
Пачніце з таго, што раздзяліце дзве рэчы, якія змяніліся адначасова: сеткавы шлях і выкананне ў браўзеры. VPN змяняе адрас выхаду; ён не змяняе паходжанне старонкі, якое складаецца са схемы, хоста і порта. Калі запыт цяпер паспяховы, нешта змянілася ў адказе або ў самім запыце. Вызначэнне таго, што менавіта, — гэта ўсё расследаванне.
CORS — гэта пратакол загалоўкаў, які выконвае браўзер, таму нішто на сеткавым шляху не можа яго адключыць.
Паходжанне — не IP-адрас
Паходжанне — гэта схема, хост і порт. Гэта не адрас, з якога выходзяць пакеты, і не IP, які бачыць сервер. Менавіта таму VPN можа змяніць кожны назіральны адрас і пакінуць паходжанне нязменным. Браўзер параўноўвае Access-Control-Allow-Origin з адказу з паходжаннем старонкі, і адрас выхаду ніколі не ўваходзіць у гэтае параўнанне.
Таму пашырэнне або проксі, якія выглядаюць так, нібы выпраўляюць памылку CORS, робяць нешта іншае: перапісваюць загалоўкі або накіроўваюць запыт так, што ён больш не з'яўляецца міжпаходжанневым. Ні тое, ні другое не ўласцівасць VPN.
Што браўзер насамрэч дасылае
Для міжпаходжанневага запыту, які не з'яўляецца простым, браўзер спачатку дасылае папярэднюю праверку OPTIONS з меркаваным метадам і загалоўкамі. Сервер павінен адказаць дазволамі, якія ён дапускае, і сапраўдны запыт ідзе толькі калі гэты адказ задавальняе правілы. VPN змяняе шлях, які нясе абодва абмены, і можа змяніць тое, што адказваюць прамежкавыя службы. Ён не змяняе радок паходжання або патрабаванне папярэдняй праверкі.
Кліент каманднага радка звычайна нічога з гэтага не паказвае. Ён можа не дасылаць загаловак Origin, часта прапускае папярэднюю праверку і можа несці іншыя ўліковыя даныя. Цела, вернутае curl, даказвае, што сервер адказаў curl.
Знайдзіце адказ, які змяніўся
Параўноўвайце фактычны адказ на кожным шляху, а не толькі код стану. Глядзіце на загалоўкі з дазволамі CORS, тып змесціва, любы перанакіраванне і на тое, ці варыянт WAF або CDN стварыў іншую старонку. Рэгіянальная адмова, перанакіраванне аўтэнтыфікацыі або старонка памылкі без загалоўка дазволу — усё гэта правальваецца ў браўзеры, выглядаючы як памылка CORS. Гэта адрозненні шляху дастаўкі, і менавіта іх трэба дакументаваць.
Запішыце загалоўкі адказу з абодвух шляхоў і параўнайце іх радок за радком. Калі адзіная розніца — адсутнасць Access-Control-Allow-Origin на адной старонцы памылкі, вы знайшлі прычыну.
Выпраўляйце службу, а не выкананне
Калі служба ваша, прапішыце дазволеныя паходжанні і магчымасці запыту яўна, а затым чытайце памылкі, якія ствараюць яе фронтэнд і пасярэднікі. Калі не, дашліце ўладальніку службы ачышчанае параўнанне. Ніколі не ўключайце ў гэтую справаздачу кукі, загалоўкі аўтарызацыі або экспарты сесій, бо гэта ўліковыя даныя, для абароны якіх існуе палітыка.
Пазбягайце пашырэнняў браўзера, якія адключаюць CORS. Яны змяняюць мяжу бяспекі, хаваючы розніцу ў адказе, якую трэба было патлумачыць, і пакідаюць тую ж памылку для ўсіх іншых карыстальнікаў.
Запішыце абодва адказы, выкарыстанае паходжанне і пройдзены шлях. Гэты запіс ператварае чутку пра VPN у памылку службы.