javascript - 如何在 ServiceWorker 中获取自己的 URL 或主机名?
问题描述
在 ServiceWorker JavaScript 代码本身(不是页面代码)中,我想知道我自己的 URL。或者至少是自己的主机。
我需要这个,因为我想要来自我自己服务器的资源和来自其他服务器的资源的不同缓存行为。
换句话说:event.request.url
总是一个带有主机和路径的 URL(如https://example.com/index.html
)。我需要知道,这个 URL 是否来自与 ServiceWorker 本身来自的同一主机。
解决方案
在 service worker 执行上下文中,self
设置为ServiceWorkerGlobalScope
,它继承自WorkerGlobalScope
. 有一个location
属性WorkerGlobalScope
可以为您提供所需的信息。
您可以通过以下辅助方法将其付诸实践以解决您的问题:
function isSameOrigin(urlString) {
const urlOrigin = (new URL(urlString)).origin;
return urlOrigin === self.location.origin;
}
推荐阅读
- list - 运行名称在列表中的函数
- node.js - 从 Angular 向 Node 发出请求时,未授权受保护的路由
- mysql - 内部连接非常慢。我该如何优化?
- spring - 在 Spring Boot 2.1.3 中无法排除 Couchbase 自动配置
- javascript - 如何在我的日历上创建另一行,按其建筑物对这些标题进行分组?
- python - Xlsxwriter 条件格式问题
- twos-complement - 如果结果为零有什么问题吗
- python - Debian 构建包:将 python virtualenv 添加到 dpkg-buildpackage 以上传到启动板
- python - 在folium地图上添加菜单栏以选择或取消选择特定对象(标记)
- sql - 选择结转报告