В Chrome 115 были внесены изменения в хранилище, сервис-воркеры и коммуникационные API за счет секционирования в сторонних контекстах . Помимо изоляции политикой одного и того же происхождения, затронутые API, используемые в сторонних контекстах, также изолируются сайтом контекста верхнего уровня.
Сайты, у которых еще не было времени реализовать поддержку стороннего секционирования хранилища, могут принять участие в пробной версии устаревания , чтобы временно отменить разделение (продолжить изоляцию с помощью политики того же источника, но удалить изоляцию сайтом верхнего уровня) и восстановить предыдущее поведение хранилище, сервисные работники и коммуникационные API в контенте, встроенном в их сайт. Срок действия этой пробной версии устаревания истекает с выпуском Chrome 127 3 сентября 2024 года. Обратите внимание, что она отличается от пробной версии прекращения поддержки доступа к сторонним файлам cookie: она предназначена только для доступа к хранилищу.
В качестве долгосрочного решения для решения определенных случаев использования , нарушаемых сторонним разделением хранилища без файлов cookie, Chrome предлагает возможность третьим лицам запрашивать доступ к хранилищу/связи (как с использованием файлов cookie, так и без файлов cookie) через API доступа к хранилищу ( поставляется начиная с Chrome 117), что уже позволяет третьим лицам запрашивать доступ к файлам cookie.
Начиная с Chrome 120, это предложение будет доступно для экспериментирования в рамках пробной версии. Разработчикам следует принять участие в этой пробной версии, чтобы оценить, как предлагаемое решение соответствует их сценариям использования, чтобы убедиться, что они готовы к завершению пробной версии устаревания.
Подробности пробной версии Origin
Начиная с Chrome 120, Chrome будет поддерживать пробную версию StorageAccessAPIBeyondCookies , чтобы включить предлагаемое расширение API доступа к хранилищу (обратно совместимое), позволяющее получить доступ к неразделенному хранилищу (с файлами cookie и без файлов cookie) в стороннем контексте.
Механика
API можно использовать следующим образом (JavaScript работает во встроенном iframe):
// Request a new storage handle via rSA (this should prompt the user)
const handle = await document.requestStorageAccess({all: true});
// Write some 1P context sessionStorage
handle.sessionStorage.setItem('userid', '1234');
// Write some 1P context localStorage
handle.localStorage.setItem('preference', 'A');
// Open or create an indexedDB that is shared with the 1P context
const messageDB = handle.indexedDB.open('messages');
// Use locks shared with the 1P context
await handle.locks.request('example', ...);
Если вам нужен только доступ к конкретному API, а не доступ ко all
, вы можете передать имена только тех дескрипторов API, которые вам нужны. Например, вы можете передать {sessionStorage: true}
чтобы просто получить доступ к хранилищу сеансов, или {indexedDB: true, locks:true}
чтобы получить доступ к IndexedDB и веб-блокировкам.
Помимо вызова этого дополнительного расширения, доступ к хранилищу без файлов cookie будет соответствовать текущим требованиям для доступа к файлам cookie через API доступа к хранилищу. Например, в Chrome запрос не отображается, если источники находятся в одном наборе связанных веб-сайтов (RWS, новое название для собственных наборов). На источники, не являющиеся частью одного и того же RWS, будут распространяться требования API доступа к хранилищу в Chrome .
Продолжительность
Пробная версия Origin будет доступна с Chrome 120 до Chrome 125 (или после 6 августа 2024 г. на любом этапе).
Объем
В Chrome 120 доступны только хранилище DOM (сеансовое и локальное хранилище), индексированная база данных и веб-блокировки.
В Chrome 121 были добавлены кэш-хранилище, частная файловая система Origin, квота, хранилище BLOB-объектов и широковещательный канал.
Общие рабочие процессы и контроль над включением файлов cookie были добавлены в Chrome 123.
Выделенные рабочие процессы наследуют доступ к неразделенным файлам cookie, если requestStorageAccess
был вызван до создания рабочего процесса, начиная с Chrome 120 (для этого не требуется использовать дескриптор API доступа к хранилищу).
Участвовать
- Оцените, как вы используете файлы cookie и хранилища без файлов cookie в стороннем контексте. Примеры вариантов использования могут помочь понять, соответствует ли это предложение вашим потребностям.
- Запустите Chrome версии 120 (или более поздней версии) и убедитесь, что флаг поэтапного отказа от сторонних файлов cookie включен.
- Если вы хотите протестировать эту функцию локально без предварительной настройки пробного токена источника, вы можете включить #enable-experimental-web-platform-features в своем браузере.
- После завершения локального тестирования вы можете зарегистрироваться для участия в пробной версии источника StorageAccessAPIBeyondCookies и получить токен для своих доменов. Более подробные инструкции можно найти на странице Начало работы с пробными версиями Origin . Руководство по устранению неполадок в пробных версиях Chrome Origin содержит полный контрольный список, позволяющий убедиться, что ваш токен правильно настроен.
- Вставьте этот пробный токен источника в iframe, в котором вам нужно использовать дескриптор API доступа к хранилищу, с помощью заголовка HTTP , метатега HTML или программным способом . Обратите внимание, что токен должен быть встроен в любой фрейм, который хочет использовать этот API. Встраивание его в родительский фрейм не активирует API в дочерних фреймах.
- Вызовите
document.requestStorageAccess(...)
чтобы получить дескриптор API доступа к хранилищу в межсайтовом iframe. См. документацию по API доступа к хранилищу, чтобы узнать требования для успешного выполнения этого вызова. - Перенесите хранилище, связанное с вашим iframe, чтобы использовать дескриптор API доступа к хранилищу, если он доступен. Например, вызовы
window.sessionStorage.setItem(...)
становятсяhandle.sessionStorage.setItem(...)
. - Откройте свой веб-сайт и убедитесь, что дескриптор доступа к хранилищу работает должным образом.
- Чтобы прекратить участие в пробной версии Origin, удалите токен, добавленный на шаге 3.
- Отправьте отзыв или сообщите о любых проблемах, с которыми вы столкнулись, в репозиторий GitHub Storage Access API без файлов cookie .
Демо: использование API доступа к хранилищу для доступа к неразделенному локальному хранилищу
В следующей демонстрации показано, как получить доступ к неразделенным широковещательным каналам из стороннего iframe с помощью API доступа к хранилищу:
https://saa-beyond-cookies.glitch.me/
Для демонстрации требуется Chrome 121 или более поздней версии с включенным флагом поэтапного отказа от сторонних файлов cookie .