Разрешения и безопасность WebXR
API WebXR Device API имеет несколько областей безопасности, от установления Политики разрешений до обеспечения того, что пользователь намерен использовать презентацию смешанной реальности перед ее активацией. В частности, необходимо подтвердить доступ к таким функциям устройства, как микрофон и/или камера, получить разрешение на использование интерактивного режима VR (применимо) и так далее. Разнообразие аппаратного и программного обеспечения, вовлеченного в XR, приводит к использованию нескольких API и технологий. В этом руководстве мы рассмотрим, как убедиться, что ваше приложение имеет необходимые разрешения для обеспечения безопасного и частного опыта XR.
API WebXR Device API подвергается целому ряду ограничений по разрешениям и безопасности. Хотя они не являются обременительными, стоит знать о них. В основном они касаются режима сеанса с полным погружением immersive-vr, но есть моменты, о которых следует знать при настройке сеанса AR.
Интерактивная презентация VR
Во-первых, любые запросы на активацию режима immersive-vr отклоняются, если домен, отправляющий запрос, не имеет разрешения на включение интерактивного сеанса. Это разрешение поступает из xr-spatial-tracking Политики разрешений.
После прохождения этой проверки запрос на вход в режим immersive-vr разрешается, если все перечисленное ниже истинно:
- Вызов
requestSession()был инициирован кодом, выполняющимся в обработчике события пользователя, или из кода запуска для приложения, запущенного пользователем web-приложение. - Документ считается надёжным, то есть ответственным, активным и фокусированным.
- Намерение пользователя войти в интерактивный режим VR хорошо понимается; см. Намерение пользователя ниже для получения подробностей.
Если все это верно, обещание, возвращаемое requestSession(), выполняется, и новый объект XRSession передаётся в обработчик выполнения. В противном случае выбрасывается соответствующее исключение, например SecurityError, если у документа нет разрешения на вход в интерактивный режим.
Встраиваемая презентация
При запросе XRSession с режимом, установленным на inline, и если необходимы или запрошены какие-либо функции, браузер позволит создать сеанс только в том случае, если вызов requestSession() был произведен кодом, выполняющимся непосредственно из-за намерения пользователя.
В частности:
- Если вызов
requestSession()не исходит из обработчика, выполняющегося в ответ на событие пользователя, и не производится при запуске веб-приложения, запрос отклоняется, иfalseпередаётся обработчику выполнения обещания. - Если документ, отправляющий запрос, не является ответственным за сценарий, запрос отклоняется.
- Если документ, отправляющий запрос, ненадёжен, запрос отклоняется, и
falseвозвращается через процедуру выполнения обещания. Достоверный документ — это документ, который одновременно ответственен, активен и в фокусе. - Если намерение пользователя открыть встроенную презентацию XR не ясно, запрос отклоняется. Понимание намерения пользователя может быть либо неявным, либо явным.
Примечание: Дополнительные требования могут быть введены из-за конкретных функций, запрошенных объектом параметров при вызове requestSession().
Намерение пользователя
Намерение пользователя — это концепция того, выполняется ли действие кодом по желанию пользователя или нет. Существуют два вида намерения пользователя: неявное и явное.
Явное намерение пользователя (явное согласие пользователя) предоставляется, когда пользователя конкретно и прямо попросили разрешить действие.
Неявное намерение пользователя (неявное согласие пользователя) предполагается, если выполняется одно из следующих условий:
- Пользователь каким-либо образом взаимодействовал с документом, что, в свою очередь, вызвало ваш запрос. Например, если у вас есть кнопка "Войти в режим XR", и пользователь нажимает её, вызов
requestSession()из обработчика событияclickкнопки будет разрешён. - Если ваш код выполняется во время запуска веб-приложения, среда выполнения может рассматривать сам факт запуска вашего веб-приложения как намерение пользователя.
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/WebXR_Device_API/Permissions_and_security