【发布时间】:2013-02-16 13:04:32
【问题描述】:
我开发了一个使用 YouTube 数据 API v2 的 Google Chrome 扩展程序。我在清单中的权限字段如下所示,因为脚本是在 youtube.com 下的页面中注入的,而且我还需要访问选项卡:
"permissions": ["tabs", "*://*.youtube.com/*"]
当我向 YouTube 数据 API v2 发出请求时,这也有效,因为请求是向 http://gdata.youtube.com/ 发出的,所以它是同一个域。但现在我正在迁移到 YouTube Data API v3,并且请求必须发送到 http://www.googleapis.com/youtube/v3/(注意 HTTPS 而不是 HTTP)。然而,令人惊讶的是,我的请求在没有添加任何新权限的情况下运行良好。
我知道,我问的问题似乎不是问题,但我个人认为我的软件中我不理解的任何行为都是问题。为什么会这样?我是否不应该添加诸如"*://*.googleapis.com/*" 之类的权限以使我对 API 的 XMLHttpRequest 请求能够正常工作?
我对此也有一些猜测:HTTP Access Control headers。我的请求确实发送了一个Origin 标头,其值为chrome-extension://myExtensionId。 API 的答案还包含以下标头:
Access-Control-Allow-Origin: chrome-extension://myExtensionId
但这可能是 Chrome 允许我在清单中未定义任何额外权限的情况下执行跨域 XMLHttpRequest 的原因吗?不确定,显然 Google API、YouTube 数据 API v3 或 Chrome 扩展开发者文档中没有记录。
【问题讨论】:
标签: google-chrome-extension xmlhttprequest cross-domain google-api youtube-api