Новое расположение VPN не сбрасывает разрешение на уведомления
Разрешение на уведомления принадлежит источнику сайта, а не вашему IP. Посмотрите, какой слой хранит каждое разрешение и почему доставка push через VPN выглядит сломанной.
Мысль о том, что смена VPN может сбросить разрешение сайта на уведомления, ошибочна так, что это стоит людям реального времени. Ничто в вашем адресе выхода не является частью записи разрешения. Разрешение сайта хранится относительно его источника внутри одного профиля браузера, поэтому переезд с одного сервера на другой оставляет его ровно там, где оно было. Меняется же ваша сессия, и обычно именно на неё смотрят люди, когда решают, что VPN что-то сделал с их уведомлениями.
Три хранилища, которые выглядят как одна настройка
Разрешение — это одна запись, переключатель уведомлений операционной системы — другая, а собственное состояние подписки сайта — третья. Каждое отзывается в другом месте другим действием.
| Layer | Where it lives | What actually revokes it |
|---|---|---|
| Permission grant | Browser profile, keyed by origin | Site settings, site reset, or clearing site data |
| OS delivery switch | Operating system notification settings | The OS per-app or per-browser toggle |
| Push subscription | Push service, bound to a service worker registration | Unsubscribe, or a subscription the service considers expired |
К чему привязано разрешение
Разрешение на веб-уведомления действует по источнику и по профилю. Оно следует https://app.example.com а не за вашим публичным адресом, поэтому тот же сайт, спрошенный на другой машине, должен спросить снова, и поэтому другая конечная точка VPN не создаёт нового запроса. Проверьте это там, где оно записывается: панель уведомлений в настройках сайта перечисляет источники, которым выдано разрешение, а сама страница может сообщить своё состояние.
chrome://settings/content/notifications
navigator.permissions.query({name: 'notifications'})
chrome://serviceworker-internals
Запрос сообщает состояние, которое у источника уже есть, не запрашивая новое, а страница service worker — это место, где регистрация и её push-подписка живут или не могут жить. Если разрешение есть, а доставка всё равно не работает, вы смотрите на третий слой, а не на первый.
Путь push — это отдельные отношения
Web Push добавляет подписку, которой страница не управляет напрямую. Браузер запрашивает PushSubscription у push-службы, передаёт странице URL конечной точки, а доставка позже идёт на эту точку и передаётся зарегистрированному service worker. Документация MDN о PushSubscription описывает конечную точку как собственный URL на push-сервере для подписывающегося worker, и в этом весь смысл: это возможность доставки, а не публичный адрес, который вы публикуете.
Отсюда следуют два последствия. Во-первых, к URL конечной точки нужно относиться как к чувствительным данным, поэтому ему не место в публичной ветке поддержки. Во-вторых, push-служба применяет собственную аутентификацию, поэтому одного лишь наличия URL недостаточно, чтобы доказать, что кто-то может отправить аутентифицированное сообщение. Когда вы отписываетесь, браузер велит push-службе аннулировать подписку, и именно это действие прекращает доставку. Смена VPN-серверов — не это действие.
Почему VPN выглядит виноватым
Смените адрес выхода, и многие сайты заново аутентифицируют вас, меняют сессионный cookie или заново рисуют страницу настроек с нуля. Тогда уведомления с этого сайта могут прекратиться по причинам, не связанным с разрешением: новая сессия не та, что подписана, сайт заново проверяет собственное маркетинговое согласие, или региональное правило скрывает функцию. Доставка может не работать и потому, что хост конечной точки push недоступен или медленный через новый путь, а снаружи это выглядит точно так же, как отозванное разрешение.
Читайте слои по отдельности, прежде чем что-либо заключать. Панель разрешений говорит, есть ли разрешение; список service worker говорит, есть ли регистрация и подписка; переключатель операционной системы говорит, может ли браузер вообще что-то показывать.
Меняйте то, что вы собирались изменить
Если вы хотите остановить уведомления, отзовите разрешение для этого источника и отпишите push-настройку сайта, а затем убедитесь, что переключатель операционной системы не единственное, что стоит между сайтом и вашим экраном блокировки. Блокировка будущих уведомлений не удаляет данные учётной записи, которые у сайта уже есть, и это отдельный запрос к сайту.
Если вы хотите другой сетевой путь, смените VPN. Он влияет на идентичность сессии, географические правила и то, до каких серверов вы можете добраться, и оставляет разрешение на уведомления нетронутым.
Относитесь к содержимому уведомления с тем же подозрением через VPN, как и без него. Знакомый браузер, показывающий сообщение, не доказывает, что отправитель или ссылка легитимны.