如何在 Service Worker 中解析 URL

How to parse URLs in a Service Worker

我正在尝试编写一个 Service Worker 来缓存我的部分网页,但我需要每个请求的来源和路径才能决定如何处理它。不幸的是,Request 对象只有完整的 URL 作为字符串,我找不到任何方法来解析它。

URL 解析是一个复杂且容易出错的过程,因此我更愿意尽可能使用本机功能,但我能找到的唯一方法是在 [=16= 中解析 URLs ] 涉及滥用 DOM <a> 元素,这在 service worker 上下文中显然不是一个选项。我该怎么办?

您可以使用 URL API
它使您能够从字符串创建新的 URL 对象并使用组件:

var a = new URL('http://www.domain.com/asdf/?a=b#123');
console.log(a)

a.searchParams.forEach(function(val, key){
  console.log(key + ' ' + val);
});

这是一个实验性的 API,但它在 Web Workers 中可用,所以应该不错。