在 Firefox WebExtension 中播放远程音频文件时出现 CSP 错误
CSP error while playing a remote audio file in Firefox WebExtension
我正在开发一个扩展,我需要从远程服务器播放音频,我有另一个服务器来获取其他信息。
我在 manifest.json
中添加了以下行:
"content_security_policy": "default-src 'self' https://firstserver.com https://serverwithaudio.com;"
我也试过了
"content_security_policy": "default-src 'self' https://firstserver.com; media-src https://serverwithaudio.com;"
但其中 none 有效,但我仍然收到此错误:
Content Security Policy: The page’s settings blocked the loading of a
resource at https://serverwithaudio.com/media/audio1.mp3
(“default-src”).
是否可以播放来自两个不同来源的远程音频,或者我在 manifest.json
中遗漏了某些内容
我解决了这个问题。
首先,如果您将 content_security_policy
放入您的 manifest.json
,您将无法在 Mozilla 扩展目录中提交它。
其次,我将音频文件移动到与获取信息相同的服务器上。然后从后台脚本播放音频。
当我点击内容脚本上的按钮时,我会向后台脚本发送一条消息,其中包含音频 url:
let audioUrl = "https://example.com/media/audio.mp3";
chrome.runtime.sendMessage({audio: audioUrl});
在后台脚本中:
chrome.runtime.onMessage.addListener(function(req, sender, sendResponse){
if (req.audio) {
(new Audio(req.audio)).play();
}
return true;
});
请记住,您仍然需要在权限指令中提及您的主机。
"permissions": [
"*://example.com/"
]
我正在开发一个扩展,我需要从远程服务器播放音频,我有另一个服务器来获取其他信息。
我在 manifest.json
中添加了以下行:
"content_security_policy": "default-src 'self' https://firstserver.com https://serverwithaudio.com;"
我也试过了
"content_security_policy": "default-src 'self' https://firstserver.com; media-src https://serverwithaudio.com;"
但其中 none 有效,但我仍然收到此错误:
Content Security Policy: The page’s settings blocked the loading of a resource at https://serverwithaudio.com/media/audio1.mp3 (“default-src”).
是否可以播放来自两个不同来源的远程音频,或者我在 manifest.json
我解决了这个问题。
首先,如果您将 content_security_policy
放入您的 manifest.json
,您将无法在 Mozilla 扩展目录中提交它。
其次,我将音频文件移动到与获取信息相同的服务器上。然后从后台脚本播放音频。
当我点击内容脚本上的按钮时,我会向后台脚本发送一条消息,其中包含音频 url:
let audioUrl = "https://example.com/media/audio.mp3";
chrome.runtime.sendMessage({audio: audioUrl});
在后台脚本中:
chrome.runtime.onMessage.addListener(function(req, sender, sendResponse){
if (req.audio) {
(new Audio(req.audio)).play();
}
return true;
});
请记住,您仍然需要在权限指令中提及您的主机。
"permissions": [
"*://example.com/"
]