2011-07-05 91 views
1

假设我有一台本地守护进程正在我的机器上运行,并且我想与一个Greasemonkey脚本中的守护进程进行通信。我知道网站JavaScript的核心概念之一就是它与其他所有东西都是隔离的,但我想知道是否有解决方法。获取greasemonkey脚本与正在运行的进程交互?

我的想法之一是使用WebSocket将数据发送到本地守护进程,但它们仅在基于Webkit的浏览器上可用。

+0

['GM_xmlhttpRequest'](http://wiki.greasespot.net/index.php?title=GM_xmlhttpRequest&oldid=6445)? –

+0

我可能需要守护程序来运行HTTP服务器。 –

回答

3

三种可能性:

  1. 给守护程序的Web服务器的功能,然后通过GM_xmlhttpRequest()正常使用AJAX技术来与它进行交互。

  2. 代替GM脚本,make a Firefox add-on。附加组件可以以比GM脚本更危险的方式与本地系统进行交互。

  3. 我不建议使用最后一种方法,但要包括它的完整性......守护程序可能会读取和/或写入Firefox Cookie或localStorage。 GM脚本也可以,但XSS限制适用于此(与GM_xmlhttpRequest()不同)。

1

你可以让守护进程接受HTTP请求,这很容易使用JavaScript来完成?我认为您需要在这里改进守护进程,而不是脚本本身 - JavaScript非常安全,而Greasemonkey只是更进一步。

+1

本质上是正确的,但普通的JS不会轻松地生成XSS HTTP请求。考虑在你的答案中提及'GM_xmlhttpRequest()'。 –

+0

非常好的一点。我没有提到这一点的原因是因为Chrome不支持userscripts。尽管你的回答已经提到了,所以我会保持原样。 –

+0

我不认为你可以在Chrome用户脚本中执行XSS请求,除非在过去几个月内发生了变化。 –

相关问题