我正在开发一个 Greasemonkey 脚本,它在网页上实现了几个工具。此脚本从
请求数据http://localhost/chess/heartbeat.php
目前在 Firefox 中,我收到此控制台错误,它完全停止了我的 jQuery AJAX 数据请求。
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at
http://localhost/chess/heartbeat.php.
This can be fixed by moving the resource to the same domain or enabling CORS.
我可以使用 Google Chrome 解决这个问题。当我将它作为 chrome 的简单浏览器扩展时,我能够让它做与 Greasemonkey 相同的事情,并且我可以将以下权限添加到插件的 list 文件中,这允许我发出与 Firefox 相同的数据请求被阻止:
"permissions": [
"<all_urls>"
]
无论如何,这适用于 chrome,但我想在 Firefox 上实现相同的效果。我一直在研究这个问题,但找不到简单的答案。
最佳答案
通常 XMLHttpRquest
,包括围绕它的 jQuery 更高级别的 API,不允许不受限制的跨站点请求,但受到同源策略和 CORS 的限制。 .
正如@epascarello 已经指出的那样,您可以使用 GM.xmlHttpRequest
它允许您执行任何跨站点 XHR,即使服务器未实现 CORS 或允许源站点。它还附带一些其他好东西。
您应该添加一个 @grant GM.xmlHttpRequest
您的用户脚本的元数据 block ,否则您的脚本将来可能会中断。
由于您提到了 Chrome 扩展:Firefox 扩展也可以执行跨站点 XHR。例如大多数用户脚本应该可以使用 PageMod
轻松移植到 SDK 插件中并启用 certain permissions类似于您在 Chrome 扩展程序中所做的事情。
关于javascript - 如何在 Firefox 中允许来自 greasemonkey 脚本的跨源请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24688294/