服务器以 Status=304 响应一个浏览器的 GET 请求,以 200 响应另一个浏览器的 GET 请求
server responds to one browser's GET request with Status=304 and another's with 200
我正在尝试调试我的.htaccess
文件,其中包含:
<FilesMatch "'.(html|swf)$">
<IfModule mod_headers.c>
Header set Cache-Control "no-cache, public"
</IfModule>
</FilesMatch>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 month"
ExpiresByType text/html "access plus 0 seconds"
ExpiresByType application/x-shockwave-flash "access plus 1 month"
</IfModule>
在反复访问我在 Safari 中看到的同一网页时:
名称=包装器.html,方法=GET,状态=200(正常),类型=文本/html
名称=应用.html,方法=GET,状态=200(正常),类型=应用程序/X冲击波闪光
对于铬:
问题是Safari应该从缓存名称=包装器.html,方法=GET,状态=304(未修改),类型=文本/html
名称=应用程序.html,方法=GET,状态=304(未修改),类型=应用程序/x冲击波闪光
中检索时从服务器下载,而Chrome则正确地从缓存中检索。
那么,如何从服务器获取Status=304
到Safari(如Chrome所示)?(我猜这是根本原因,如果不是,请告诉我)
更新
我刚刚检查了缓存文件,似乎 Safari 首先没有将下载的文件放入缓存中,以便在将来访问时从中提取。不知道为什么。
这与服务器或htaccess文件没有任何关系。Safari 发送的请求需要一个If-Modified-Since
标头,否则如果Last-Modified
时间早于请求中的时间,则 apache 不会响应 304。
我不知道为什么 Safari 不发送标头,或者它只是在某些时候发生还是与某处的浏览器设置有关。但你不是唯一一个发生这种情况的人。
相关文章:
- 响应应包含一个对象,但得到的却是GET操作的数组
- 从javaspring方法管理http.get响应
- AngularJS HTTP Get 没有得到响应
- 如何在ExpressJS和LomotiveJS上保存对变量的GET响应
- Node/Angular中的$http GET请求收到了奇怪的响应
- 将 http GET 响应与 ngRepeat 中的隔离作用域绑定
- 在猫鼬查询返回集合之前,应用程序应该如何处理 http get 响应
- 如何使用环回对 GET 响应进行排序
- 如何在 AngularJS 中获取 GET 响应的网址
- Angular2:从http.get响应中提取数组元素
- 将 GET 响应传递给 POST
- YQL ODT-REST GET响应存在,但无法访问
- 可以'在GET响应中没有看到JSON字段(mongoose)
- 正在Javascript Vanilla中缓存GET响应
- 是否可以将GET响应数据传递回同一工厂
- GET响应不能与jQuery一起工作
- 如何缓存JQUERY GET响应(数据)并在另一个函数中使用它
- 从jquery GET响应中获取值
- 如何在PhantomJS中保存XML GET响应到文件
- 使用 JQuery 从 GET 响应中获取相关信息