据我了解,扩展中有两种类型的脚本,一种是从网页中的 DOM 运行并与之交互的“内容脚本”,它们受同源策略的约束;另一种是“内容脚本”。其他的是脚本,调用它们“扩展脚本”,在后台运行,可能会也可能不会与网页交互,例如main.js在火狐或背景.js在 Chrome 中。这是谷歌对扩展脚本的解释
“……有一个长期运行的脚本来管理某些任务或状态……后台页面是在扩展进程中运行的 HTML 页面。它在扩展的生命周期中存在,并且只有一个实例某个时间处于活动状态”
那么问题来了,同源策略如何适用“扩展脚本”?既然这些脚本独立于正在查看的网页上的内容,为什么要这样做呢?是什么domain无论如何,扩展脚本? (谷歌说“扩展尝试使用除自身之外的安全源” https://developer.chrome.com/extensions/xhr.html,但没有明确说明起源是什么。)
可以在扩展中完成以下操作吗?
示例一:从时间服务器获取时间,并将其显示在附加栏上。
示例二:一个扩展程序,检查任意域中最近关闭的页面(或已添加书签但已关闭的页面)是否已更新,如果更新则提醒用户。
我知道 Chrome 中的跨域 HTTP 和 Ftp 请求可以通过在声明权限 Http://*/ 后使用 XMLHttpRequest 来完成。但是火狐浏览器呢?其他协议怎么样,比如 smtp、ppp 等?
HTML5中的WebSocket,在扩展脚本中使用,是否受到同域策略的束缚?
Chrome 扩展程序(包括背景页面)与常规网页一样仅限于同源策略。但是,您可以在 Chrome 应用程序或扩展程序的清单中请求跨源权限,这将使您的 XHR 成功。因此,您应该能够使用此方案执行示例 1。我不确定你如何执行上面的示例 2。
在您的扩展的 manifest.json 中:
"permissions": [
"http://www.google.com/"
],
我会让其他人回答有关 Firefox 的问题。
这里有一个包含更多信息的参考:http://developer.chrome.com/extensions/xhr.html http://developer.chrome.com/extensions/xhr.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)