如何在 Service Worker 中发出 JSONP 请求?
Posted
技术标签:
【中文标题】如何在 Service Worker 中发出 JSONP 请求?【英文标题】:How to make a JSONP request inside a Service Worker? 【发布时间】:2016-04-01 13:10:43 【问题描述】:您可能知道,Service Worker 没有document
。因此,许多像 this one 这样的 javascript 方法都不起作用。
我需要发出 JSONP 请求,因为 Blogger API 不使用 CORS 回答来自不同域的请求。
感谢您的回复。
【问题讨论】:
【参考方案1】:Web Worker 全局有一个名为 importScripts 的方法,您可以使用它来包含脚本 url。
所以只要定义一个回调函数,将函数名作为callback
的url参数,并将url传递给importScripts
webworker.js
function cb(data)
console.log(data);
importScripts('http://example.com/jsonp.php?callback=cb');
【讨论】:
非常感谢!有用! (我用过self.cb = function (resp)
)
从 Chrome 71 开始,不允许运行时调用 importScripts
:“在 Chrome 71 之前,在安装处理程序之外异步调用 importScripts() 将起作用。从 Chrome 71 开始,这些调用会引发运行时异常(除非之前在安装处理程序中导入了相同的 URL),与其他浏览器中的行为相匹配。” -- developers.google.com/web/updates/2018/10/…以上是关于如何在 Service Worker 中发出 JSONP 请求?的主要内容,如果未能解决你的问题,请参考以下文章
Service-Worker addEventListener,如何使用事件参数?
与 Angular.js 控制器通信 service-worker
Rails 对 service-worker.js 的未知调用
@vue/cli-plugin-pwa 没有创建 service-worker.js
我如何在Service Worker中缓存动态URL?它与预缓存有关系吗?我正在使用ReactJS默认serviceWorker