我正在尝试将Zoom Web Video SDK集成到现有的Web应用程序中,出于性能原因,SharedArrayBuffer已成为一项要求,为了实现这一点,站点必须实现跨源隔离。我已经向NGINX添加了必要的配置,即:
add_header 'Cross-Origin-Embedder-Policy' 'require-corp';
add_header 'Cross-Origin-Opener-Policy' 'same-origin';
... 但是,这当然会对之前存在的其他工作场所产生连锁效应。谷歌API似乎再也无法成功加载了。
我更改了index.html,将crossorigin属性添加到Google API脚本标记中,如下所示:
<script src="https://apis.google.com/js/platform.js" async defer crossorigin></script>
... 在我的javascript源代码中,我已经(解释并降低复杂性以抓住要点):
gapi.load('client:auth2', function() {
gapi.client
.init({
client_id: 'MY-CLIENT-ID',
cookiepolicy: 'single_host_origin',
discoveryDocs: ['https://classroom.googleapis.com/$discovery/rest?version=v1'],
scope: 'profile email'
})
.then(() => console.log('init finished'))
.catch(e) => console.error('init failed', e));
});
https://content-classroom.googleapis.com/static/proxy.html?usegapi=1&
... 还有很多其他东西我不确定是否敏感,所以我省略了
当您深入到响应中时,它会显示:
要从其他来源使用此资源,服务器需要
在响应标头中指定跨源资源策略:
-
-
跨源资源策略:跨源仅当包含此资源的任意网站未强制执行
安全风险。
更新