Започнете со разделување на две работи што се смениле истовремено: мрежниот пат и спроведувањето од прелистувачот. 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 во грешка во службата.

Поврзани статии