Chrome浏览器不发送'如果
我正在使用角度服务通过rest api获取资源。 服务器将ETag
头部设置为某个值,并且还在其响应中设置Cache-Control: no-cache
。
这可以按照预期的方式使用Firefox,但是当我使用Chrome访问相同的应用程序时,它不会发送If-None-Match
。 我已经尝试了Mac和Ubuntu盒子上当前的Chrome开发者和稳定频道,两者都是相同的,而Firefox则正确添加了If-None-Match
。
现在,还有其他非xhr /静态资源可以有条件地获取,并且所有这些请求都能正确获得304 NOT MODIFIED
响应。
有什么我可以做的,以获得更多关于为什么Chrome没有发送仅用于XHR请求的If-None-Match
标头的信息?
如果您通过HTTPS在Chrome中发布Ajax查询,则任何证书错误(例如在API服务器上使用自签名证书)都会阻止响应被缓存。 这似乎是设计。
显然Chrome存在缺陷,但在Webkit中已修复并于2010年左右将其改为Chromium / Chrome。
另一个问题建议使用jQuery的ifModified:true和cache:true选项手动设置If-Modified-Since和If-None-Match标头。 不幸的是,这不会超过Chrome的预期行为,不会缓存来自具有自签名证书的服务器的HTTPS响应。
在具有有效签名SSL证书的服务器上测试解决了我的问题; 根据预期,Chrome使用默认的jQuery AJAX方法为文本/ html内容获得了304个。
链接地址: http://www.djcxy.com/p/73863.html