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