我们在Gmail中接收mp3语音邮件。从今天开始,所有使用谷歌浏览器的电脑都不能播放Gmail中的MP3。这不会影响其他托管MP3的网站。
经进一步检查,控制台报告:
Refused to load media from 'https://mail.google.com/mail/u/...' because it violates the following Content Security Policy directive: "media-src https://*.googlevideo.com/videoplayback/".
Gmail没有遵守新的CSP政策吗?除了简单地下载和播放文件之外,还有其他工作吗?
根据内容安全策略指令media-src https://*.googlevideo.com/videoplayback/
,来自不同于https://*.googlevideo.com/videoplayback/
的源的媒体文件不能在嵌入页面的<video>
/<audio>
标记中播放
即使您通过ajax加载媒体,并使用blob:Url创建<audio>
标签,它也会被上面的CSP阻止
它不依赖于浏览器,这就是CSP的工作方式。
根据当前的CSP限制,媒体文件只能在独立的浏览上下文中播放,如<iframe>
/<object>
/<embed>
。
我不知道GMail是有意还是偶尔制作的,但只有使用嵌套浏览上下文的浏览器扩展才能在这种情况下播放媒体。
最后,我用XMLHTTPRequest
创建了一个Chrome扩展,以绕过CSP并在不直接下载的情况下播放mp3。
我发布了一个名为GPlayer的Chrome扩展。正在等待谷歌的批准。我相信未来的联系是https://chrome.google.com/webstore/detail/obdmmgdlafadeehmbmcmoggnaokehnaj
Github链接-https://github.com/TriStarGod/GPlayer