我正在开发一个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上实现相同的效果。我一直在研究这个问题,但我找不到简单的答案。
答案 0 :(得分:8)
通常XMLHttpRquest
,包括jQuery的高级API,不允许不受限制的跨网站请求,但受同源政策和CORS的限制。< / p>
正如@epascarello已经指出的那样,你可以使用GM_xmlhttpRequest
(Scriptish),它允许你执行任何跨站点XHR,即使服务器没有实现CORS或允许原始站点。它还附带了一些其他好东西。
您应该在用户脚本中添加@grant GM_xmlhttpRequest
元数据块,否则您的脚本将来可能会中断。
由于您提到了Chrome扩展程序:Firefox扩展程序也可以执行跨站点XHR。
例如。大多数用户脚本应该可以使用PageMod
轻松移植到SDK插件,并启用certain permissions类似于您在Chrome扩展程序中执行的操作。