这是我的元标记:
<meta http-equiv="Content-Security-Policy" content="default-src * 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src http://* 'self' 'unsafe-inline'; media-src *">
我正在使用此元标记在端口上调用服务器的socket.io.js文件,如:
<script src="https://example.co:3344/socket.io/socket.io.js"></script>
这适用于WebRTC(rtcmulticonnection),因此我的流事件触发并流式创建媒体:
rtcMultiConnection.onstream = function(event) {
if (event.stream.getVideoTracks().length) {
$('.users-container').append(event.mediaElement);
}
}
发生错误:
拒绝从'blob:http://localhost:8000/74677955-8811-43d0-bf30-2362208364d7'加载媒体,因为它违反了以下内容安全策略指令:“media-src *”。
适用于Mozilla Firefox,但无法在Android,Chrome浏览器和IOS中使用。
修改
AndroidManifest权限:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.MICROPHONE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
我看不到android错误。
答案 0 :(得分:6)
尝试使用media-src blob:&#39;在您的元标记以及通配符中:
<meta http-equiv="Content-Security-Policy" content="default-src * 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src http://* 'self' 'unsafe-inline'; media-src * blob:">
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/media-src