【发布时间】:2014-02-14 15:47:13
【问题描述】:
据我了解,扩展中有两种类型的脚本,一种是“内容脚本”,它从网页中的 DOM 运行并与之交互,受同源策略的约束;另一个是脚本,称为 “扩展脚本”,它们在后台运行,可能会或可能不会与网页交互,例如 Firefox 中的 main.js 或 在 Chrome 中的 background.js。这是谷歌对扩展脚本的解释
"...有一个长时间运行的脚本来管理某些任务或状态...后台页面是在扩展进程中运行的 HTML 页面。它在扩展的生命周期中存在,并且只有一个实例一次激活”
所以问题是,同源策略如何应用于“扩展脚本”?为什么要这样做,因为这些脚本独立于正在查看的网页上的内容?扩展脚本的 domain 到底是什么? (谷歌说"extension attempts to use a security origin other than itself",但没有明确说明来源是什么。)
可以在扩展中完成以下操作吗?
示例一:从时间服务器获取时间,并显示在插件栏上。
示例二:一个扩展程序检查来自任意域的最近关闭的页面(或已添加书签但已关闭的页面)是否已更新,并在更新时提醒用户。
我知道 Chrome 中的跨域 HTTP 和 Ftp 请求可以在声明权限 Http://*/ 后使用 XMLHttpRequest 来完成。但是火狐呢?其他协议,如 smtp、ppp 等呢?
在扩展脚本中使用的 HTML5 中的 WebSocket 是否受到同域策略的束缚?
【问题讨论】:
标签: google-chrome-extension websocket firefox-addon cross-domain