我正在使用angular服务通过rest api获取资源。服务器将ETag标头设置为某个值,并在其响应中设置Cache-Control: no-cache。
使用火狐浏览器可以正常工作,但当我使用Chrome浏览器访问同一个应用程序时,它不会发送If-None-Match。我在苹果电脑和Ubuntu机器上都试过了当前的Chrome dev和稳定频道,两者都是一样的,而火狐则正确地添加了If-None-Match。
现在,有条件地获取了其他非xhr/静态资源,并且所有这些请求都正确地获得了304 NOT MODIFIED响应。
有什么我可以做的来获得更多的信息,为什么Chrome不只为XHR请求发送If-None-Match头?
发布于 2013-11-21 01:08:13
如果在Chrome中通过HTTPS发出Ajax查询,任何证书错误,例如在API服务器上使用自签名证书,都会阻止响应被缓存。这似乎是有意为之。
显然是一个Chrome defect existed,但在Webkit中是fixed,并在2010年左右进入了铬/铬。
另一个缓存建议使用ifModified: true和cache: true选项手动设置If-Modified- using和If-None-Match标头。不幸的是,这不会覆盖Chrome不缓存来自具有自签名证书的服务器的HTTPS响应的预期行为。
在具有有效签名的SSL证书的服务器上进行的测试为我解决了这个问题;Chrome使用默认的jQuery AJAX方法,如预期的那样接收到了文本/html内容的304。
https://stackoverflow.com/questions/18414477
复制相似问题