假设我有一台本地守护进程正在我的机器上运行,并且我想与一个Greasemonkey脚本中的守护进程进行通信。我知道网站JavaScript的核心概念之一就是它与其他所有东西都是隔离的,但我想知道是否有解决方法。获取greasemonkey脚本与正在运行的进程交互?
我的想法之一是使用WebSocket将数据发送到本地守护进程,但它们仅在基于Webkit的浏览器上可用。
假设我有一台本地守护进程正在我的机器上运行,并且我想与一个Greasemonkey脚本中的守护进程进行通信。我知道网站JavaScript的核心概念之一就是它与其他所有东西都是隔离的,但我想知道是否有解决方法。获取greasemonkey脚本与正在运行的进程交互?
我的想法之一是使用WebSocket将数据发送到本地守护进程,但它们仅在基于Webkit的浏览器上可用。
三种可能性:
给守护程序的Web服务器的功能,然后通过GM_xmlhttpRequest()
正常使用AJAX技术来与它进行交互。
代替GM脚本,make a Firefox add-on。附加组件可以以比GM脚本更危险的方式与本地系统进行交互。
我不建议使用最后一种方法,但要包括它的完整性......守护程序可能会读取和/或写入Firefox Cookie或localStorage。 GM脚本也可以,但XSS限制适用于此(与GM_xmlhttpRequest()
不同)。
你可以让守护进程接受HTTP请求,这很容易使用JavaScript来完成?我认为您需要在这里改进守护进程,而不是脚本本身 - JavaScript非常安全,而Greasemonkey只是更进一步。
本质上是正确的,但普通的JS不会轻松地生成XSS HTTP请求。考虑在你的答案中提及'GM_xmlhttpRequest()'。 –
非常好的一点。我没有提到这一点的原因是因为Chrome不支持userscripts。尽管你的回答已经提到了,所以我会保持原样。 –
我不认为你可以在Chrome用户脚本中执行XSS请求,除非在过去几个月内发生了变化。 –
['GM_xmlhttpRequest'](http://wiki.greasespot.net/index.php?title=GM_xmlhttpRequest&oldid=6445)? –
我可能需要守护程序来运行HTTP服务器。 –