Примите участие в пробной версии Origin для доступа к хранилищу без файлов cookie через Storage Access API.

Хелен Чо
Helen Cho
Ари Чивукула
Ari Chivukula

В 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 доступа к хранилищу).

Участвовать

  1. Оцените, как вы используете файлы cookie и хранилище без файлов cookie в стороннем контексте. Примеры вариантов использования могут помочь понять, соответствует ли это предложение вашим потребностям.
  2. Запустите Chrome версии 120 (или более поздней) и убедитесь, что установлен флаг поэтапного отказа от сторонних файлов cookie .
  3. Если вы хотите протестировать эту функцию локально без предварительной настройки пробного токена источника, вы можете включить #enable-experimental-web-platform-features в своем браузере.
    1. После завершения локального тестирования вы можете зарегистрироваться для участия в пробной версии источника StorageAccessAPIBeyondCookies и получить токен для своих доменов. Более подробные инструкции можно найти на странице Начало работы с пробными версиями Origin . Руководство по устранению неполадок в пробных версиях Chrome Origin содержит полный контрольный список, позволяющий убедиться, что ваш токен правильно настроен.
    2. Вставьте этот пробный токен источника в iframe, в котором вам нужно использовать дескриптор API доступа к хранилищу, используя HTTP-заголовок , метатег HTML или программно . Обратите внимание, что токен должен быть встроен в любой фрейм, который хочет использовать этот API. Встраивание его в родительский фрейм не активирует API в дочерних фреймах.
  4. Вызовите document.requestStorageAccess(...) чтобы получить дескриптор API доступа к хранилищу в межсайтовом iframe. Требования для успешного выполнения этого вызова см. в документации по API доступа к хранилищу .
  5. Перенесите хранилище, связанное с вашим iframe, чтобы использовать дескриптор API доступа к хранилищу, если он доступен. Например, вызовы window.sessionStorage.setItem(...) становятся handle.sessionStorage.setItem(...) .
  6. Откройте свой веб-сайт и убедитесь, что дескриптор доступа к хранилищу работает должным образом.
  7. Чтобы прекратить участие в пробной версии Origin, удалите токен, добавленный на шаге 3.
  8. Отправьте отзыв или сообщите о любых проблемах, с которыми вы столкнулись, в репозиторий GitHub Storage Access API без файлов cookie .

Демо: использование API доступа к хранилищу для доступа к неразделенному локальному хранилищу

В следующей демонстрации показано, как получить доступ к неразделенным широковещательным каналам из стороннего iframe с помощью API доступа к хранилищу:

https://saa-beyond-cookies.glitch.me/

Для демонстрации требуется Chrome 121 или более поздней версии с включенным флагом поэтапного отказа от сторонних файлов cookie .

Дополнительные ресурсы