在来自 twitter.com 的用户脚本中使用提取

Using fetch in user scripts from twitter.com

这是来自 的 follow-up,因为经过进一步调查,核心问题似乎不同,足以保证提出不同的问题

我正在尝试使用带有 TamperMonkey 的用户脚本来调用不相关的 API。但是看起来不可能在 twitter 页面上调用外部 APIs。

fetch('https://httpbin.org/post', {
        method: 'POST',
        body: JSON.stringify('{}')
    })

这从浏览器控制台 (Firefox) 调用,几乎可以在任何网站上运行,返回带有镜像数据的 200 代码。 然而,当启动时,仍然在浏览器控制台中,从 twitter.com,这将不起作用并且 returns 没有数据的 202 CachedForSync。

在 Chrome 控制台中我得到一个明确的错误:

Refused to connect to 'https://httpbin.org/post' because it violates the following Content Security Policy directive: "connect-src 'self' blob:

(后面是 URL 列表,我假设每个外部 API 都由 Twitter 自己的脚本调用)

我不知道这是相同还是不同的错误(如果是 Chrome 特定的东西,我不感兴趣,我的目标是 Firefox)。

这是否意味着无法从 Twitter 页面调用任何其他 API 或者是否有解决方法?不同的调用方式? Headers ?浏览器选项?有什么吗?

===

感谢@sideshowbarker 的编辑,我意识到 CSP 是问题,而不是 CORS(我之前的所有障碍都是 CORS,这个错误在控制台中的 CORS 错误中间,我没有意识到这些是分开的东西)。

所以第一个解决方案:禁用 Firefox 中的 security.csp.enable 选项。这行得通。尽管出于明显的原因我宁愿避免这种情况。

是否可以在网站上进行设置,这样风险较小?是否可以通过 TamperMonkey 函数或指令来避免它?至少我有新的关键字可以继续搜索。

解决方法:不使用fetch,而是GM.xmlhttpRequest函数。它能够绕过CSP。