google-chrome-extension - 我可以通过内容脚本对服务器上托管的 REST API 进行 ajax 调用吗?

标签 google-chrome-extension

在构建 chrome 扩展时阅读博客和一些 stackoverflow 答案后,出于某种原因,我认为我们无法对托管在托管页面之外的另一个域下的服务器上托管的 REST API 进行 ajax 调用。它是否正确?在开发扩展程序时,我在单击扩展程序 UI 上的按钮时错误地从内容脚本进行了调用(UI 使用内容脚本注入(inject)到 DOM 中)。我没有遇到任何错误。一切都很顺利。我的测试用例中的主机页面实际上是来自堆栈溢出的页面,并且 REST API 托管在我的 localhost 上。难道是因为 api 在本地主机上?

最佳答案

来自 Chrome XHR documentation :

Regular web pages can use the XMLHttpRequest object to send and receive data from remote servers, but they're limited by the same origin policy. Extensions aren't so limited. An extension can talk to remote servers outside of its origin, as long as it first requests cross-origin permissions.

此外,来自Content Script documentation :

Content scripts can also make cross-site XMLHttpRequests to the same sites as their parent extensions [...]

因此,您唯一需要的就是将 API 端点添加到 list 中的主机权限:

"permissions" : [
  "*://api.example.com/*"
]

关于google-chrome-extension - 我可以通过内容脚本对服务器上托管的 REST API 进行 ajax 调用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29057661/

相关文章:

javascript - 内容安全策略阻止对 * ://www. google.com/recaptcha/api 的请求

javascript - 当内容脚本用 React 注入(inject)时告诉后台脚本?

javascript - Chrome 扩展 :How to show background image in new Tab

google-chrome-extension - Chrome 扩展程序中的更改响应

javascript - 是否可以从弹出窗口触发内容脚本中的行为?

javascript - 将现有元素注入(inject) React

javascript - 用户单击复选框后保持上下文菜单打开?

google-chrome-extension - 在 ManifestV3 Service Worker 后台脚本中使用 `window` 全局变量

javascript - 如何在 Firefox 扩展中捕获特定的 xmlhttp 请求?

java - 使用 Selenium 从 Chrome Web Store 安装/添加 chrome 扩展