使用浏览器插件规避同源策略
circumvent the same origin policy using a browser plugin
我最近读到"同源策略"不适用于浏览器插件。
我想创建一个项目,用户可以通过iframes使用Gmail、Facebook、Twitter等网络服务。
由于这些网站上的策略标题相同,简单地使用iframe是不可能的,但我正在努力弄清楚如果安装我的浏览器插件,是否有办法做到这一点。
如果有人能提出任何想法,我将不胜感激。
webview(https://developer.chrome.com/apps/tags/webview)应该能够实现你想做的一切。
这包括"insertCSS"answers"executeScript"等方法。唯一需要的权限是"webview"
虽然你不能用iFrames(据我所知)做到这一点,但chrome扩展的文档将允许你从任何域获取html,并在域处于你的权限范围内时显示它。
即在"permissions" array
中的manifest.json
中,将条目添加为字符串("http://www.facebook.com"
)。
您应该能够从那里用程序呈现一个页面,其中包含您喜欢的任何内容。
如果使用在Node Webkit:中编写的桌面应用程序,您可以避免浏览器跨源限制,并且仍然可以编写HTML5 javascript
基本上,您可以创建一个单独的网页应用程序,并使用node.js命令行在桌面上启动它。然后,它可以从任何你喜欢的url中读取和操作数据。
以下是关于如何启动的教程:http://code.tutsplus.com/tutorials/introduction-to-html5-desktop-apps-with-node-webkit--net-36296
你的问题很宽泛,但让我们假设你在一个页面上有三个iframe,twitter、facebook和gmail,为了论证起见,你想要一条新的推文在gmail和facebook中弹出一个提醒框。
我认为你有两种(可能有三种)选择。您可以使用window.postMessage
向父窗口发布消息,然后让扩展处理父窗口中的消息内容(例如parent.postMessage(message, "*");
。请记住,可以发布对象)。
或者,如果我是正确的,您的另一个解决方案是使用chrome扩展的后台页面功能。(https://developer.chrome.com/extensions/background_pages#details)。
我认为这个片段似乎与你想做的事情最相关(取自上面的链接):
您可以使用直接脚本调用在各个页面之间进行通信,类似于框架的通信方式。extension.getViews方法返回属于扩展的每个活动页面的窗口对象列表,extension.get BackgroundPage方法返回背景页面。
在我链接的部分下面有一个例子,我不会复制到这里,因为它很大。
事实上,读过这些之后,它是指运行扩展的页面,还是指包含在扩展本身中的页面,这一点非常模糊。
还有chrome"消息传递"功能(https://developer.chrome.com/extensions/messaging)其开头为:
由于内容脚本在网页的上下文中运行,而不是在扩展中运行,因此它们通常需要某种方式与扩展的其余部分进行通信
请记住,如果您希望扩展在父窗口以外的任何框架中运行,则需要在manifest.json中指定"all_frames": true
。
- 访问布局信息是否也会导致浏览器重排
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- 有时数据是't显示在浏览器中
- 使图像在单击时展开到不大于浏览器
- fetch() 函数未在 Ubuntu Chromium 浏览器上定义
- 不同浏览器中的空白字符正则表达式行为
- 在Windows 10中自动执行例行程序(主要与浏览器交互)
- Windows形成web浏览器控件和Javascript更改的DOM
- 如何临时暂停浏览器渲染,然后恢复整个页面
- 使用angularjs向浏览器发送servlet响应(下载功能)
- 如果所有浏览器都使用同源策略,CSRF 攻击如何工作?
- 浏览器实现同源策略的方式是否存在实质性差异
- 如何在浏览器 JS 控制台中包含脚本时覆盖内容安全策略
- "阻止跨来源请求:相同来源策略”;浏览器出错
- 浏览器安全策略如何使用XMLHttpRequest
- 浏览器多人网络策略-这似乎是一个可行的解决方案
- 在这种情况下,禁用浏览器的同源策略是可以接受的
- 使用浏览器插件规避同源策略
- 如果web浏览器用户修改Javascript并执行它(例如从控制台),它是否违反同源策略?