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 на одной странице ошибки, вы нашли причину.
Исправляйте сервис, а не применение
Когда сервис ваш, явно укажите разрешённые источники и возможности запроса, затем прочитайте ошибки, которые создают его фронтенд и посредники. Если не сделаете этого, отправьте владельцу сервиса очищенное сравнение. Никогда не включайте в этот отчёт cookie, заголовки авторизации или экспорт сессий, потому что это учётные данные, для защиты которых существует политика.
Избегайте расширений браузера, которые отключают CORS. Они меняют границу безопасности, скрывая разницу в ответе, которую требовалось объяснить, и оставляют тот же сбой для всех остальных пользователей.
Запишите оба ответа, использованный источник и пройденный путь. Эта запись превращает слух о VPN в ошибку сервиса.