如何从Firefox中的greasemonkey脚本中允许跨源请求?

时间:2014-07-11 00:15:51

标签: javascript google-chrome firefox cross-domain localhost

我正在开发一个Greasemonkey脚本,它在网页上实现了一些工具。此脚本从

发出数据请求
http://localhost/chess/heartbeat.php 

现在目前在Firefox中我收到此控制台错误,这完全阻止了我的jQuery AJAX数据请求。

  

阻止跨源请求:同源策略不允许在

读取远程资源
http://localhost/chess/heartbeat.php.
  

可以通过将资源移动到同一域或启用CORS来解决此问题。

我可以使用Google Chrome解决此问题。当我将它作为chrome的简单浏览器扩展时,我能够让它与Greasemonkey做同样的事情,我可以将以下权限添加到插件的清单文件中,这允许我发出相同的数据请求Firefox阻止了哪些:

"permissions": [
    "<all_urls>"
  ]

无论如何,这适用于chrome,但我希望在Firefox上实现相同的效果。我一直在研究这个问题,但我找不到简单的答案。

1 个答案:

答案 0 :(得分:8)

通常XMLHttpRquest,包括jQuery的高级API,不允许不受限制的跨网站请求,但受同源政策和CORS的限制。< / p>

正如@epascarello已经指出的那样,你可以使用GM_xmlhttpRequestScriptish),它允许你执行任何跨站点XHR,即使服务器没有实现CORS或允许原始站点。它还附带了一些其他好东西。

您应该在用户脚本中添加@grant GM_xmlhttpRequest元数据块,否则您的脚本将来可能会中断。

由于您提到了Chrome扩展程序:Firefox扩展程序也可以执行跨站点XHR。 例如。大多数用户脚本应该可以使用PageMod轻松移植到SDK插件,并启用certain permissions类似于您在Chrome扩展程序中执行的操作。