Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.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
可以让Safari对第一个文档使用HTTP条件get吗?_Http_Http Headers_Safari_Etag - Fatal编程技术网

可以让Safari对第一个文档使用HTTP条件get吗?

可以让Safari对第一个文档使用HTTP条件get吗?,http,http-headers,safari,etag,Http,Http Headers,Safari,Etag,我正在尝试将HTTP条件获取功能添加到移动站点的第一页。然而,我看到的情况让我觉得Safari在加载第一个文档时根本不支持HTTP条件Get 我通过制作一个新的Rails 3.2.13应用程序对此进行了测试,其中一个动作如下: def index last_modified = Date.today etag_obj = "something something" fresh_when last_modified: last_modified, etag: etag_obj, pub

我正在尝试将HTTP条件获取功能添加到移动站点的第一页。然而,我看到的情况让我觉得Safari在加载第一个文档时根本不支持HTTP条件Get

我通过制作一个新的Rails 3.2.13应用程序对此进行了测试,其中一个动作如下:

def index
  last_modified = Date.today
  etag_obj = "something something"
  fresh_when last_modified: last_modified, etag: etag_obj, public: false
end
请求头包含Etag和Last Modified,如预期的那样:

[cache_test]$ curl -I http://localhost:5000/test
HTTP/1.1 200 OK 
Etag: "79b547467286b3e20fad13f73fc1bf78"
Last-Modified: Wed, 24 Apr 2013 00:00:00 GMT
Content-Type: text/html; charset=utf-8
Cache-Control: max-age=0, private, must-revalidate
X-Ua-Compatible: IE=Edge
X-Request-Id: 8ace0b71533b2bc036bd84b12289cda6
X-Runtime: 0.012269
Server: WEBrick/1.3.1 (Ruby/1.9.3/2012-04-20)
Date: Wed, 24 Apr 2013 21:06:49 GMT
Content-Length: 0
Connection: Keep-Alive
Set-Cookie: _cache_test_session=BAh7B0kiD3Nlc3Npb25faWQGOgZFRkkiJTM0NWRjNDgyZGQwNWJmMGZkNmIzNmY4NjVmNWEzMDkwBjsAVEkiEF9jc3JmX3Rva2VuBjsARkkiMTlYK0VrMERGdEsvOVlzbVJ5N1FPQlZXVDRwak9zQ3QzS3ZXZ1pvbnJocjg9BjsARg%3D%3D--0902ae8a505527bd49d969753ddf1d2bd4c716eb; path=/; HttpOnly
在Firefox 20.0和Chrome 26.0.1410.65上,这就像我预期的那样:在第二次加载时,浏览器发送If Modified-Since和If None-Match-in-the-request,并接收304 Not Modified

然而,它并没有在Safari上这样做。在Safari上,它既不发送If-Modified-Since,也不发送If-None-Match,正如您所期望的那样,然后从服务器完全重新加载页面。我在MacBook Pro上的Safari 6.0.3、iOS模拟器上的Safari以及iOS 6.1.3上的iPad Mini上都看到了这一点

真正奇怪的是,Safari显然支持后续请求(CSS、JS、图像等)的条件Get——在主HTML页面完成后,我可以清楚地看到它们。但我一辈子都搞不懂如何让Safari对第一个文档发出有条件的get请求

所以,我想我的问题分为两部分:

  • 我错过了什么明显的东西吗?因为Safari的这种行为似乎有点疯狂。但也许我对苹果的期望太高了

  • 如果我没有遗漏一些明显的东西,有人知道有什么解决办法吗