【发布时间】:2017-11-18 01:19:59
【问题描述】:
chrome.webRequest API 有请求 ID 的概念(来源:Chrome webRequest documention):
请求 ID
每个请求都由一个请求 ID 标识。此 ID 在浏览器会话和扩展上下文中是唯一的。它在请求的生命周期内保持不变,可用于匹配同一请求的事件。请注意,在 HTTP 重定向或 HTTP 身份验证的情况下,多个 HTTP 请求会映射到一个 Web 请求。
即使跨重定向,您也可以使用它来关联请求。但是,当使用 fetch 或 XMLHttpRequest 开始新请求时,您最初如何阻止 id?
到目前为止,我还没有找到比使用请求的 URL 作为在新请求和 requestId 之间建立初始链接更好的方法。但是,如果对同一资源有重叠的请求,这是不可靠的。
问题:
- 如果您提出新请求(使用
fetch或XMLHttpRequest),您如何可靠地访问requestId? - fetch API 或 XMLHttpRequest API 是否允许访问 requestId?
我想做的是使用 webRequest API 提供的功能来修改单个请求,但我想确保我不会意外修改其他待处理的请求。
【问题讨论】:
-
在request event callbacks处进一步阅读文档,它被传递到回调中
-
@PatrickEvans 我可以安装一个 onBeforeRequest 监听器并从那里获取请求 id 并立即删除监听器。尽管如此,它仍会被延迟调用。据我了解,不能保证它首先触发时来自请求。可以肯定的是,我也只检查 URL 是否匹配。然后,我想假设我们得到了正确的 requestId 是相当安全的。
-
同样匹配 URL 也不是很简单。例如,可以添加尾部斜杠。
标签: javascript google-chrome-extension xmlhttprequest fetch-api firefox-addon-webextensions