Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在缓存中创建响应类型为“的响应”;cors";_Javascript_Cors_Service Worker_Progressive Web Apps_Cachestorage - Fatal编程技术网

Javascript 在缓存中创建响应类型为“的响应”;cors";

Javascript 在缓存中创建响应类型为“的响应”;cors";,javascript,cors,service-worker,progressive-web-apps,cachestorage,Javascript,Cors,Service Worker,Progressive Web Apps,Cachestorage,我在更新缓存存储中的缓存以反映我们在应用程序脱机时所做的更改时遇到问题,因为我无法创建具有“cors”类型的响应对象,而该对象是应用程序联机时缓存的对象 我需要使用响应类型:cors更新以前的缓存响应,因为应用程序在脱机时再次尝试获取GET请求时,会查找具有类似属性的请求-响应对 我尝试使用cache.put(req,res)更新它。但是,我不能按程序创建一个,因为它只创建“默认值”,除非通过实际的网络调用生成一个 我可以用响应类型:cors创建响应对象,或者更新现有的缓存体吗 我尝试扩展响应对

我在更新缓存存储中的缓存以反映我们在应用程序脱机时所做的更改时遇到问题,因为我无法创建具有“cors”类型的响应对象,而该对象是应用程序联机时缓存的对象

我需要使用
响应类型:cors
更新以前的缓存响应,因为应用程序在脱机时再次尝试获取
GET
请求时,会查找具有类似属性的请求-响应对

我尝试使用
cache.put(req,res)
更新它。但是,我不能按程序创建一个,因为它只创建“默认值”,除非通过实际的网络调用生成一个

我可以用
响应类型:cors
创建响应对象,或者更新现有的缓存体吗

我尝试
扩展
响应对象以允许修改
响应类型

以下是更新缓存的代码:

// Extend Response to use Response-Type cors
class CacheResponse extends Response {
    type = "cors";
    url = "https://localhost:5001/api/Customer?id=e2b9b098-2fd8-423b-8928-e234d80d39ed";
}

// PUT the cache
caches.open("ngsw:1:data:dynamic:api-customer:cache").then((cache) => {

    let req = new Request("https://localhost:5001/api/Customer?id=e2b9b098-2fd8-423b-8928-e234d80d39ed", {
        method: "GET",
        mode: undefined,
        headers: {
            'Accept': "application/json",
            'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36",
            'Origin': 'https://localhost:9001',
            'Referer': 'https://localhost:9001/app/customers/e2b9b098-2fd8-423b-8928-e234d80d39ed'
        }
    })

    let res = new CacheResponse(
        JSON.stringify({
            "id": "e2b9b098-2fd8-423b-8928-e234d80d39ed",
            "name": "Alvin Long",
        }), {
            headers: {
                'Content-Type': 'application/json; charset=utf-8',
                'Access-Control-Allow-Origin': '*',
                'Date': 'Fri, 05 Jul 2019 14:47:27 GMT',
                'Server': 'Kestrel',
                'Transfer-Encoding': 'chunked',
            },
            type: "cors"
        });

    cache.put(req, res)
});


这将创建另一个与前一个缓存具有相同属性的缓存,而不是
响应类型

为什么要创建类型为
“cors”
的响应?它们的可视性不如具有
“default”
类型的响应。当我尝试缓存时,第一个网络调用的类型为
“cors”
。将另一个网络调用放入缓存并再次脱机请求,但它不缓存。与此匹配并返回404,我忘了提到负责cache.match的是ngsw数据组。通过
cache.match
匹配请求时不涉及请求的模式。您的回复是否有
Vary
标题?@jaffatecake感谢您的评论。。。我遇到了@jbalintac发布的完全相同的问题,并假设
响应类型:cors
就是不同之处。原来我有不同的主机名,只是没有看到它,因为它没有显示在开发工具中。:-)你们的评论帮助我透过树木看到了森林,所以谢谢你们!为什么要创建类型为“cors”的响应?它们的可视性不如具有
“default”
类型的响应。当我尝试缓存时,第一个网络调用的类型为
“cors”
。将另一个网络调用放入缓存并再次脱机请求,但它不缓存。与此匹配并返回404,我忘了提到负责cache.match的是ngsw数据组。通过
cache.match
匹配请求时不涉及请求的模式。您的回复是否有
Vary
标题?@jaffatecake感谢您的评论。。。我遇到了@jbalintac发布的完全相同的问题,并假设
响应类型:cors
就是不同之处。原来我有不同的主机名,只是没有看到它,因为它没有显示在开发工具中。:-)你们的评论帮助我透过树木看到了森林,所以谢谢你们!