如何在manifest.json的host_permissions中排除特定URL
在Chrome扩展Manifest V3中排除特定URL权限
方法1:使用否定匹配模式(Chrome 88及以上版本适用)
直接替换host_permissions中的<all_urls>,用通用匹配模式加上否定规则来排除目标URL。比如要排除https://example.com/*,修改后的完整配置如下:
{ "name": "My extension", "version": "0.0.1", "description": "Chrome DevTool", "manifest_version": 3, "author": "ABC", "permissions": [ "cookies", "tabs", "storage" ], "host_permissions": [ "*://*/*", "!https://example.com/*" ], "devtools_page": "devtools.html", "incognito":"split" }
- 说明:
<all_urls>等价于*://*/*(所有HTTP/HTTPS/FTP URL)加上file:///*(本地文件),如果需要包含本地文件且排除特定本地路径,可添加"!file:///path/to/exclude" - 否定模式语法:在匹配模式前加
!,表示排除该范围的URL
方法2:在代码层面主动过滤
如果需要保留<all_urls>权限,但不想在特定URL下执行扩展逻辑,可以在脚本中主动判断URL并跳过处理:
后台服务Worker示例
chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => { // 排除目标URL if (tab.url?.startsWith('https://example.com/')) { return; } // 执行你的业务逻辑 });
DevTools面板示例
// 获取当前 inspected 页面的URL chrome.devtools.inspectedWindow.eval('window.location.href', (result) => { if (result.startsWith('https://example.com/')) { // 隐藏或禁用扩展功能 document.querySelector('.extension-ui').style.display = 'none'; return; } // 正常初始化扩展功能 });
内容的提问来源于stack exchange,提问作者sagar bajpayee
相关产品推荐
相关产品推荐

