3

safari 没有发回任何请求标头,我发疯了。我很惭愧我花了这么长时间才意识到它(一段时间以来发回 304,直到现在才意识到这个 safari 问题)

if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) or isset($_SERVER['HTTP_IF_NONE_MATCH'])) {

   if (isset($_SERVER['HTTP_IF_NONE_MATCH'])) echo $_SERVER['HTTP_IF_NONE_MATCH']."<br/>";
   if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) echo $_SERVER['HTTP_IF_MODIFIED_SINCE']."<br/>";
}
else {
     header("Content-Type: text/html");
     header("Last-Modified:Fri, 13 Dec 2001 20:45:54 GMT");
     header("Etag".md5_file(__FILE__)); 
     header("Expires:Fri, 13 Dec 2001 20:45:54 GMT") ;
     header("Pragma: private");
     header("Cache-Control:must-revalidate");
     echo 'refresh to view last modified/etag headers sent back by browser<br/>;
}

Firefox 说话,chrome 说话,explorer 说话。

Safari是愚蠢的。

阅读此http://use.perl.org/~bart/journal/36598将表明问题出在最后修改的标头中发送到 Safari 的日期格式上。如果是这样的话,上面使用的格式有什么问题?

花了 3 个小时进行测试和无用的搜索。现在在放弃为 safari 提供缓存支持之前浏览 developer.apple 网站...可能是内部设置,复制粘贴 http 格式日期时出错,缺少标题...

感谢您的帮助

编辑:这是 safari 在刷新上面的测试脚本时发送的 http 标头,从 safari 开发人员工具(资源)复制

Accept:application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Cache-Control:max-age=0
User-Agent:Mozilla/5.0 (Windows; U; Windows NT 6.0; fr-FR) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5
4

0 回答 0