在构建 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/