我正在使用HTML5 Sever Send Event来发布服务器的某些状态。我正在实施Chrome扩展程序来跟踪状态,并在需要时通知用户。
但是当我尝试创建EventSource对象时 Chrome会抛出异常“Uncaught Error:SECURITY_ERR:DOM Exception 18”
var tracker = (function(url) {
var source = new EventSource(url);
var onMessage = function(e) {
console.log(e);
}
source.addEventListener('new', onMessage);
return {
source: source,
newMessage: onMessage
};
})('http://localhost:3000/dispatching');
我确实将服务器的URL添加到我的扩展权限中:
"permissions": [
"http://localhost:3000/",
"tabs"
]
但是许可并没有真正解决问题! 有什么想法吗?
答案 0 :(得分:1)
对于通过file://
协议加载的HTML文件,这似乎是Same Origin Policy问题,试图通过http://
协议与服务器联系。
以下是an article,介绍如何绕过开发环境的SOP。
当你投入生产时,我的理解是google chrome提供了一些绕过通常对浏览器施加的通常SOP限制的方法。这可能是通过您提到的permissions
JSON,但我对Chrome Extensions不够熟悉,无法肯定地说。
啊,等等,this article可能有用。