我们知道,默认情况下,chrome扩展不能访问chrome://页面,如chrome://extensions和chrome://settings。(当然,我们可以更改chrome://flags/#extensions-on-chrome-urls标志,但是,,下面的问题是基于没有更改默认标志的问题)。
最近,我碰巧发现ChromeVox (由chrome.google.com提供)可以在所有页面中很好地工作,包括chrome://页面。我检查了这个扩展的源代码,并发现只要我们在manifest.json中为添加了下面一行扩展,扩展就可以在chrome://页面中很好地工作。
"key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEGBi/oD7Yl/Y16w3+gee/95/EUpRZ2U6c+8orV5ei+3CRsBsoXI/DPGBauZ3rWQ47aQnfoG00sXigFdJA2NhNK9OgmRA2evnsRRbjYm2BG1twpaLsgQPPus3PyczbDCvhFu8k24wzFyEtxLrfxAGBseBPb9QrCz7B4k2QgxD/CwIDAQAB"因此,看来chrome有类似于白名单的东西,允许特定的扩展来打破默认的限制。我说的对吗?是否有官方指南来澄清这种行为?
附录:
下面是一个示例扩展,您会发现在key中,控制台甚至在chrome://extensions页面中也会输出key;但是,一旦删除了key,什么都不会发生。
manifest.json:
{
"manifest_version": 2,
"name": "Test",
"version": "1.0",
"content_scripts": [
{
"matches": [
"<all_urls>"
],
"js": [
"content.js"
]
}
],
"key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDEGBi/oD7Yl/Y16w3+gee/95/EUpRZ2U6c+8orV5ei+3CRsBsoXI/DPGBauZ3rWQ47aQnfoG00sXigFdJA2NhNK9OgmRA2evnsRRbjYm2BG1twpaLsgQPPus3PyczbDCvhFu8k24wzFyEtxLrfxAGBseBPb9QrCz7B4k2QgxD/CwIDAQAB"
}content.js:
console.log('test');发布于 2016-08-30 07:55:19
"key"属性在manifest.json唯一的定义扩展的ID中以加密形式出现。chrome://、chrome-extension://、chrome-debugger://。https://stackoverflow.com/questions/39217503
复制相似问题