假設我有一臺本地守護進程正在我的機器上運行,並且我想與一個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服務器。 –