Javascript 是否可以使用service worker缓存动态php文件?
我试图在登录时(使用会话cookie)缓存动态php文件中的html,但html文件是从服务器中获取的,没有来自会话cookie的凭据。(我不在URL中指定文件名,仅在路径中指定) (我省略了self.addEventListener(“fetch”,函数(事件)) 当我查看“/q/中的text/html文件时,服务人员从服务器获取了它,但没有php会话cookie PHPSESSID,因此内容是错误的 (否则它在脱机状态下工作正常)Javascript 是否可以使用service worker缓存动态php文件?,javascript,php,session,cookies,service-worker,Javascript,Php,Session,Cookies,Service Worker,我试图在登录时(使用会话cookie)缓存动态php文件中的html,但html文件是从服务器中获取的,没有来自会话cookie的凭据。(我不在URL中指定文件名,仅在路径中指定) (我省略了self.addEventListener(“fetch”,函数(事件)) 当我查看“/q/中的text/html文件时,服务人员从服务器获取了它,但没有php会话cookie PHPSESSID,因此内容是错误的 (否则它在脱机状态下工作正常) 有解决方法吗?中解释了此行为 HTTP cookies(以及
有解决方法吗?中解释了此行为 HTTP cookies(以及其他一些东西)被称为“” 传出HTTP请求中是否包含凭据取决于
请求
对象的值。默认情况下,凭据
设置为'omit'
,这会导致您看到的行为。如果希望包含HTTP cookie等凭据,则需要使用请求
对象其凭据
属性设置为'include'
为此,您不应将字符串数组传递到cache.addAll()
,而应传递带有正确凭据
模式显式设置的请求
对象数组。下面是代码的更改方式:
const requestsWithCredentials = [
'/q/',
'/q/sw.js',
'/q/js/main.js',
'/q/js/init.js',
'/q/js/lib.js',
'/q/css/css.css',
'/q/images/b.jpg',
'/q/apps/BOK/js/main.js'
].map(url => new Request(url, {credentials: 'include'}));
// Later...
cache.addAll(requestsWithCredentials);
const requestsWithCredentials = [
'/q/',
'/q/sw.js',
'/q/js/main.js',
'/q/js/init.js',
'/q/js/lib.js',
'/q/css/css.css',
'/q/images/b.jpg',
'/q/apps/BOK/js/main.js'
].map(url => new Request(url, {credentials: 'include'}));
// Later...
cache.addAll(requestsWithCredentials);