javascript - 如何在 Firefox 中允许来自 greasemonkey 脚本的跨源请求?

标签 javascript google-chrome firefox cross-domain localhost

我正在开发一个 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/

相关文章:

firefox - 如何打印非静态谷歌地图(v3 api)

javascript - 使用 React-Redux 时 App 类出错 "connect "

Javascript Tic Tac Toe 游戏不会验证对 Angular 获胜者

Javascript setTimeout 不会触发延迟

google-chrome - Chrome 在非 ssl heroku web 应用程序上强制使用 ssl

javascript - Canvas drawImage 内联 svg 在 Firefox 上不起作用

javascript - 使用javascript读取txt文件

javascript - Vue.js + 调用整页文档的点击事件

c# - 无法在私有(private)浏览器模式(隐身窗口)下运行 silverlight 应用程序

Javascript 代码可以在 Mozilla Firefox 中运行,但不能在 Google Chrome 中运行