如何在 ServiceWorker 中获取自己的 URL 或主机名?

Wit*_*tek 7 javascript url service-worker

在 ServiceWorker JavaScript 代码本身(不是页面代码)中,我想知道我自己的 URL。或者至少是自己的主人。

我需要这个,因为我希望对来自我自己的服务器的资源和来自其他服务器的资源有不同的缓存行为。

换句话说:event.request.url始终是带有主机和路径的 URL(如https://example.com/index.html)。我需要知道这个 URL 是否与 ServiceWorker 本身来自同一主机。

Jef*_*ick 14

在 Service Worker 执行上下文内部,self被设置为ServiceWorkerGlobalScope,它继承自WorkerGlobalScope。有一个location属性可以为WorkerGlobalScope您提供您想要的信息。

您可以将其付诸实践,通过辅助方法解决您的问题,例如:

function isSameOrigin(urlString) {
  const urlOrigin = (new URL(urlString)).origin;
  return urlOrigin === self.location.origin;
}
Run Code Online (Sandbox Code Playgroud)