google-chrome-extension - 为什么 URL 重定向权限在 Chrome Manifest v2 中有效,但在 v3 中无效?
问题描述
我正在尝试使用 Chrome declarativeWebRequest API 重定向 URL,但它不起作用。
“权限”键中的匹配模式适用于 Manifest V2,但它现在Permission '*://www.youtube.com/*' is unknown or URL pattern is malformed
在 V3 中引发错误。
清单.json:
{
"manifest_version": 3,
"name": "Redirect Test",
"version": "0.0.1",
"permissions": [
"declarativeNetRequest",
"*://www.youtube.com/*"
],
"host_permissions": [
"*://www.youtube.com/*"
],
"declarative_net_request": {
"rule_resources": [
{
"id": "1",
"enabled": true,
"path": "rules.json"
}
]
}
}
规则.json:
[
{
"id": 1,
"priority": 1,
"action": {
"type": "redirect",
"redirect": {"url": "https://www.google.com"}
},
"condition": {
"urlFilter": "*://www.youtube.com/*",
"resourceTypes": [
"main_frame"
]
}
}
]
我正在使用 Chrome 88.0.4324.104
解决方案
发布时声明性网络请求的清单文档并不完全准确。
这是 文档中 manifest.json 中的 Permissions 键:
"permissions": [
"declarativeNetRequest",
"declarativeNetRequestFeedback",
"*://example.com/*"
],
但是,应该只指定站点host_permissions
:
"host_permissions": [
"*://example.com/*"
],
应该注意的是,这个显式声明只有action.redirect
在像这个例子中那样指定时才是必要的:
{
"id": 1,
"priority": 3,
"action": {
"type": "redirect",
"redirect": {
"regexSubstitution": "www.youtube.com/embed/"
}
},
"condition": {
"regexFilter": "(www\\.youtube\\.com\/watch\\?v=)",
"resourceTypes": [
"main_frame"
]
}
}
推荐阅读
- matlab - 在Matlab中使用数值方法绘制一阶非线性微分方程的解
- java - Spring cloud - 客户端不使用 Spring Boot 2.5.6 中的 spring.config.import 从配置文件服务器获取配置
- node.js - 在 post 中间件 mongodb 中加密 id
- elasticsearch - 在spring data elasticsearch中,如何在所有结果上投影或添加计算字段?
- gradle - 使用 gradle 命令构建成功但未执行标记的 junit 测试用例
- flutter - 未使用函数参数的 Lint 规则
- python - 使用 PYTHON 通过 ssh 发送 cqlsh 命令的正确方法
- excel - 将所有切片器连接到所有数据透视表
- javascript - FlexBox 容器没有容纳我的 div,有人可以回答我为什么吗
- javascript - 将 Mongodb 集合中的实例保存为 Atlas 触发器函数中的字符串变量