从扩展中使用 AJAX 访问远程域

Posted

技术标签:

【中文标题】从扩展中使用 AJAX 访问远程域【英文标题】:Access remote domain using AJAX from extension 【发布时间】:2012-07-25 14:09:30 【问题描述】:

我正在尝试开发 AJAX 特定页面的 Chrome 扩展程序,然后将根据该页面上的内容显示通知。 (使用webkitNotifications

这个页面是一个票务系统,我要检查的是用户是否登录,以及他们是否有新票。更重要的是,我不拥有或控制远程页面。

由于Same Origin Policy,我被卡住了。基本上,当我尝试 AJAX 页面时,我收到以下错误:

XMLHttpRequest cannot load http:// Remote Site URL . Origin chrome-extension://gcagdmmcgmldhommhlckpbgdmlfojblp is not allowed by Access-Control-Allow-Origin.

我从未为 Chrome 或任何其他浏览器开发过扩展程序,因此我不确定是否有可能的解决方法。

我尝试通过 Google 和 SO 寻找解决方案,但似乎找不到任何适合我需要的东西。

【问题讨论】:

http:// Remote Site URL * 添加到manifest.json 的权限字段 - 请参阅code.google.com/chrome/extensions/manifest.html 【参考方案1】:

Google Chrome 扩展文档有一个专门用于cross-domain XHR 的页面。只需添加一个满足您希望获取的站点的 URL match pattern 作为清单的权限。一个好的匹配模式可能看起来像

http://www.example.com/* *://www.example.com/*(适用于 HTTP 和 HTTPS) https://*.example.com/*(适用于通过 HTTPS 的 example.com 的所有子域)

【讨论】:

谢谢,这正是我需要的解决方案!

以上是关于从扩展中使用 AJAX 访问远程域的主要内容,如果未能解决你的问题,请参考以下文章

使用 c# 从另一个域访问远程目录

Ajax 跨域请求被阻止:同源策略不允许读取远程资源

允许远程跨域访问的一般处理程序

无法从远程服务器访问 Active Directory 域控制器

Ajax:跨域请求被阻止:同源策略不允许读取远程资源

jsonp的理解