【问题标题】:WebExtensions -- WebRequest event not triggering successfully despite matching network requestsWebExtensions -- 尽管匹配网络请求,但 WebRequest 事件未成功触发
【发布时间】:2019-02-20 15:55:14
【问题描述】:

我正在使用 WebExtensions 开发扩展,但遇到了 WebRequest 事件的问题。我试图截获对 Facebook.com 新闻源发送以加载更多帖子的请求的响应,该请求通过 URL https://www.facebook.com/ajax/pagelet/generic.php/LitestandTailLoadPagelet?dpr=* 发生(其中* 是一大堆标识符)。此请求显示在 devtools 中: image.

以下是相关的清单位:

{
    "permissions": [
        "*://facebook.com/*",
        "tabs",
        "activeTab",
        "webRequest",
        "webRequestBlocking"
    ],
    "background": {
        "scripts": [
            "background.js"
        ]
    },
    "content_scripts": [{
        "matches": ["*://facebook.com/", "*://facebook.com/groups/?*"],
        "js": ["/content-script.js"],
        "css": ["/css/styles.css"]
    }]
}

在 background.js 中,我在文件的最顶部有以下事件侦听器(此处的顺序不重要):

browser.webRequest.onHeadersReceived.addListener(
    details => { console.log("event"); }, 
    { urls: ["https://www.facebook.com/ajax/pagelet/generic.php/LitestandTailLoadPagelet?dpr=*"] }, 
    ["blocking", "responseHeaders"]
);

但是,发出请求(甚至使用相同的 url 重新发送上图中的请求)不会触发 console.log,甚至不会触发通过 devtools 在事件上设置的断点。页面加载没有问题。

有什么想法吗?

【问题讨论】:

  • 所有关于“匹配模式”的文档都提到了方案、主机和路径——没有任何迹象表明您可以匹配 URL 的“搜索”部分(?之后的部分)......当然,没有任何建议你也不能,所以到目前为止我的评论毫无用处:p - 作为测试,删除网址中的?dpr=* 只是为了看看它是否被触发
  • 好主意,但匹配模式适用于任何文本和包含 * 的通配符。反正我试过了,结果一样——不匹配。

标签: javascript firefox webrequest firefox-addon-webextensions


【解决方案1】:

您正在尝试拦截对www.facebook.com 的请求,但您没有该域的主机权限(您确实有facebook.com,但这是一个不同的域)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-07
    • 2015-08-19
    • 2011-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-08
    • 2018-01-27
    相关资源
    最近更新 更多