IOS UIWebView和Safari没有发送If-None-Match,但Android WebView和Chrome确实如此

时间:2013-06-19 07:30:04

标签: android iphone asp.net http safari

我使用ASP.NET作为IOS和Android的服务器,它使用ETag和If-None-Match标头返回304或200.当我在Chrome开发工具和远程调试Android WebView上检查这一切时,每件事都有效意味着他正在发送If-None-Match请求标头。但在Safari和远程调试中做同样的事情IOS UIWebView总是不发送If-None-Match标头。 If-None-Match标头在IOS中不起作用。 Safari中的结果相同

编辑:以下是Safari中的响应标头,

Cache-Control:private
Content-Encoding:gzip
Content-Length:448
Content-Type:text/html; charset=utf-8
Date:Wed, 19 Jun 2013 09:27:46 GMT
Etag:00amyWGct0y_ze4lIsj2Mw
Server:Microsoft-IIS/7.5
Vary:Accept-Encoding
X-AspNet-Version:4.0.30319
X-Powered-By:ASP.NET

3 个答案:

答案 0 :(得分:1)

来自here

  

警告几年前,ETag主要由代理使用,而不是浏览器使用。由于浏览器越来越多的支持,ETags的价值逐渐增长。请记住,并非所有浏览器都支持ETag。例如,Apple的Safari不支持它们。如果您希望大量Safari用户访问您的网站,您可以考虑提供Last-Modified标头并检查If-Modified-Since标头以及使用ETag

答案 1 :(得分:0)

您的ETag标头字段值在语法上不正确。也许这就是为什么Safari会忽略它(这会很好!)。

另一个原因可能是无法正确处理“Vary”(这最终会影响某些版本的IE)。

答案 2 :(得分:0)

检查此图表以确定其特定于版本的问题

http://www.yuiblog.com/blog/2010/06/28/mobile-browser-cache-limits/