Nat*_*her 3 ntlm http-negotiate service-worker
我一直在尝试使用IIS托管网站中的服务工作者来缓存网站的一些静态内容.该站点是使用Windows身份验证的内部应用程序.我已经能够在没有太多麻烦的情况下注册和运行服务工作者,但是只要我打开缓存并开始向缓存添加文件,承诺就会因授权失败而失败.返回的HTTP结果是401 Unauthorized.这是对浏览器和服务器能够协商授权之前的前几个请求的通常响应.
我会尽快发布一些代码来帮助解释.
编辑
var staticCacheName = 'app-static-v1';
console.log("I AM ALIVE");
this.addEventListener('install', function (event) {
console.log("AND I INSTALLED!!!!");
var urlsToCache = [
//...many js files to cache
'/scripts/numeral.min.js?version=2.2.0',
'/scripts/require.js',
'/scripts/text.js?version=2.2.0',
'/scripts/toastr.min.js?version=2.2.0',
];
event.waitUntil(
caches.open(staticCacheName).then(function (cache) {
cache.addAll(urlsToCache);
}).catch(function (error) {
console.log(error);
})
);
});
Run Code Online (Sandbox Code Playgroud)
Jef*_*ick 18
考虑到缺少代码,这只是一个猜测,但是如果您正在执行以下操作:
caches.open('my-cache').then(cache => {
return cache.add('page1.html'); // Or caches.addAll(['page1.html, page2.html']);
});
Run Code Online (Sandbox Code Playgroud)
您正在利用将字符串传递给/ 时发生的隐式Request 对象创建(请参阅第6.4.4.4.1节).创建的对象使用默认凭据模式,即.cache.add()cache.addAll()Request'omit'
您可以做的是显式构造一个Request包含您更喜欢的凭据模式的对象,在您的情况下可能是'same-origin':
caches.open('my-cache').then(cache => {
return cache.add(new Request('page1.html', {credentials: 'same-origin'}));
});
Run Code Online (Sandbox Code Playgroud)
如果你有一堆你传递数组的URL cache.addAll(),你可以将.map()它们转换为相应的Requests 数组:
var urls = ['page1.html', 'page2.html'];
caches.open('my-cache').then(cache => {
return cache.addAll(urls.map(url => new Request(url, {credentials: 'same-origin'})));
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1844 次 |
| 最近记录: |