WebXR 許可權和安全
WebXR 裝置 API 涉及幾個安全領域,從建立許可權策略(Permissions Policy)到確保使用者在啟用混合現實演示之前有意使用它。除其他事項外,您需要確認對麥克風和/或攝像機等裝置功能的訪問許可權,獲取使用沉浸式 VR 模式(如果適用)的許可權,等等。XR 涉及的各種硬體和軟體會用到多種 API 和技術。在本指南中,我們將介紹如何確保您的應用程式擁有提供安全和私密的 XR 體驗所需的許可權。
WebXR 裝置 API 受多項許可權和安全控制。雖然不繁瑣,但值得注意。這些主要圍繞全沉浸式 immersive-vr 會話模式,但在設定 AR 會話時也有需要注意的事項。
VR 的沉浸式演示
首先,如果發出請求的域名沒有啟用沉浸式會話的許可權,任何請求啟用 immersive-vr 模式的請求都將被拒絕。此許可權來自 xr-spatial-tracking 許可權策略。
透過此檢查後,如果以下所有條件都成立,則允許進入 immersive-vr 模式的請求:
requestSession()呼叫是由在使用者事件處理程式中執行的程式碼,或者由使用者啟動的 Web 應用程式的啟動程式碼發出的。- 該文件被認為是可信的,因為它負責任,並且當前處於活動狀態並具有焦點。
- 使用者進入沉浸式 VR 模式的意圖已被充分理解;有關詳細資訊,請參閱下面的“使用者意圖”。
如果所有這些條件都成立,則 requestSession() 返回的 Promise 將被解析,並且新的 XRSession 物件將傳遞到 fulfillment handler。否則,將丟擲適當的異常,例如,如果文件沒有進入沉浸式模式的許可權,則丟擲 SecurityError。
內聯演示
當您請求一個模式設定為 inline 的 XRSession,並且需要或請求任何功能時,瀏覽器將僅在 requestSession() 呼叫是由明確由於使用者意圖而執行的程式碼發出時,才允許建立該會話。
具體而言:
- 如果
requestSession()呼叫不是在響應使用者事件執行的處理程式中發出的,並且不是在啟動 Web 應用程式時發出的,則請求將被拒絕,並且false將傳遞給 Promise 的 fulfillment handler。 - 如果發出請求的文件不是負責該指令碼的文件,則請求將被拒絕。
- 如果發出請求的文件不可信,則請求將被拒絕,並且
false將透過 Promise 的 fulfillment routine 返回。可信文件是指負責任且活躍,並且當前具有焦點的文件。 - 如果使用者開啟內聯 XR 演示的意圖未被充分理解,則請求將被拒絕。對使用者意圖的理解可以是隱含的或顯式的。
注意:由於在呼叫 requestSession() 時透過 options 物件請求了特定功能,可能會生效其他要求。
使用者意圖
使用者意圖是指程式碼正在執行的操作是由於使用者想要或不想要執行某事而執行的。使用者意圖有兩種:顯式和隱式。
顯式使用者意圖(顯式使用者同意)是在使用者被明確要求執行某項操作的許可權時授予的。
隱式使用者意圖(隱式使用者同意)在以下任一情況下會被假定:
- 使用者已與文件進行某種方式的互動,進而導致您的請求發生。例如,如果您有一個“進入 XR 模式”按鈕,並且使用者單擊它,那麼從按鈕的
click事件處理程式呼叫requestSession()將被允許。 - 如果您的程式碼在 Web 應用程式啟動期間執行,則執行時可能會認為啟動您的 Web 應用程式的行為符合使用者意圖。