问题描述
我正在尝试使用Twilio进行视频通话。后端成功生成令牌,并且我正在使用它来建立视频通话。从浏览器请求访问麦克风和摄像头的权限后,我在chrome中收到以下错误:
Error with Feature-Policy header: Unrecognized feature: 'speaker'.
log.js:138 2020-09-08 16:12:12.867Z | WARN in [createLocalTracks #1]: Call to getUserMedia Failed: DOMException: Permission denied
运行时
useEffect(() => {
isWebRtcSupported();
createRoom().then(response => {
Video.connect(response.data.token)
.then(room => {
setCreatedRoomId(response.data.room);
setRoomData(room);
room.on('participantConnected',participantConnected);
room.on('participantdisconnected',participantdisconnected);
room.participants.forEach(participantConnected);
})
.catch(err => setError(error)));
}
我正在使用twilio视频连接。在Firefox和Safari以及localhost上的任何浏览器中(在任何浏览器中),连接均成功。在浏览器中重置权限无济于事,已授予Chrome中的权限。您能给我一个提示什么可能是问题吗?
解决方法
因此,问题出在后端部分的功能策略上。后端代码是使用JHipster生成的,它包含以下代码:
.featurePolicy("geolocation 'none'; midi 'none'; sync-xhr 'none'; microphone 'none'; camera 'none'; magnetometer 'none'; gyroscope 'none';
因此,基本上禁止使用麦克风和摄像头。将none
更改为*
解决了该问题,浏览器可以访问音频和视频流。
有趣,但是Mozilla和Safari似乎忽略了这些指令,因为在这些浏览器中一切正常,而没有对策略进行任何更改。