在twitter.com的用户脚本中使用fetch



这是这个问题的后续问题,因为经过进一步调查,看起来核心问题是不同的,足以保证一个不同的问题

我试图使用一个用户脚本与TamperMonkey调用一个不相关的API。但是在twitter页面上调用外部api似乎是不可能的。

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

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

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

拒绝连接'https://httpbin.org/post',因为它违反了以下内容安全策略指令:"connect-src 'self' blob:

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

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

这是否意味着从twitter页面调用任何其他API是不可能的,还是有一种绕过它的方法?不同的呼叫方式?头吗?浏览器选项?什么?

= = =

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

第一个解决方案:禁用security.csp.enable选项。这个作品。尽管出于显而易见的原因,我宁愿避免那样做。

是否可以在网站的基础上设置,这样风险会小一些?是否有可能通过TamperMonkey函数或指令来避免它?至少我有新的关键词可以搜索了。

解决方法:不使用fetch,使用GM.xmlhttpRequest函数。它可以绕过CSP

相关内容

  • 没有找到相关文章

最新更新