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

Подобни статии