Cors 如何将serviceWorker中的httpOnly会话与fetch一起使用?

Cors 如何将serviceWorker中的httpOnly会话与fetch一起使用?,cors,service-worker,fetch-api,Cors,Service Worker,Fetch Api,我想创建类似于facebook通知的逻辑。当我的站点未在选项卡中打开时,用户将收到来自服务人员的通知。因此,我们的想法是在serviceWorker中从setInterval触发restful服务 好的,太好了。我面临的第一个问题是,XmlHttpRequest在serviceWorker中不可用。这给我留下了唯一的选择:使用。我的站点使用httpOnly会话cookie进行授权。因此,我尝试使用凭据调用fetch:“同源” fetch('https://localhost:8000/get_e

我想创建类似于facebook通知的逻辑。当我的站点未在选项卡中打开时,用户将收到来自服务人员的通知。因此,我们的想法是在serviceWorker中从setInterval触发restful服务

好的,太好了。我面临的第一个问题是,
XmlHttpRequest
在serviceWorker中不可用。这给我留下了唯一的选择:使用。我的站点使用httpOnly会话cookie进行授权。因此,我尝试使用
凭据调用fetch:“同源”

fetch('https://localhost:8000/get_extension_messages', {
        credentials: 'same-origin'
    }).then(function (response) {
        console.log(e);
    }).catch(function(e) {
        console.error(e);
    })
我添加了
访问控制允许原点:https://localhost:8000/
到服务器响应,但我的请求没有到达它,我得到的唯一东西是
sw.js TypeError:无法获取
。根据:

当发生网络错误时,fetch()承诺将以TypeError拒绝 在服务器端遇到或CORS配置错误,尽管 通常指许可问题或类似问题-404不构成 例如,网络错误。

值得一提的是,这段代码在网页上运行,这意味着我配置了CORS ok。由于我的cookie是httpOnly,我甚至无法从网页访问它(我可以编写一个方法,返回sessionid,然后将sessionid从网页传递给serviceworker,但感觉不对)

因此,我的问题是:

  • 我如何实现这样的用例
  • 我是否可以执行fetchfromserviceworker并读取响应,我是否做错了什么
更新


事实证明,自签名证书导致了
TypeError
。有趣的是,如果我在没有任何标志的情况下运行chrome,服务工作者根本不会加载。在我的例子中,我启动chrome时使用了
--允许不安全的本地主机--user data dir=/tmp/lol
,因此服务人员工作时没有任何问题,但fetch api没有。不确定是否输入错误,但Access Control allow Origin response标头不应包含尾部斜杠-它应该是:

Access-Control-Allow-Origin: https://localhost:8000

这可能是问题所在。

可能相关,但不起作用。我在问题中解释道,结果是ssl解决了问题。奇怪的是,chrome甚至没有向服务器发出验证ssl的请求,它只是将网页证书视为无效,并决定立即在promise中返回“TypeError”。这使得在开发过程中无法测试serviceWorker,因为您无法创建本地主机的证书。谢谢你的回答,我会记住,
accesscontrolalloworigin
不应该有尾随斜杠。