Safari 不发送“If-Modified-Since”和“If-None-Match”标头

2023-11-23

我正在使用 PHP 生成动态内容。

我发送以下 HTTP 标头:

HTTP/1.1 304 Not Modified
Date: Sun, 09 Dec 2012 17:24:41 GMT
Server: Apache
Connection: keep-alive, Keep-Alive
Keep-Alive: timeout=1, max=100
Etag: "237f43b800e655dbe6567f7d32d34c99"
Expires: Sun, 16 Dec 2012 17:24:41 GMT
Cache-Control: max-age=604800
Vary: Accept-Encoding

我稍后检查 Etag 发送header('HTTP/1.1 304 Not Modified')如果匹配的话。 这与 Chrome 和 Firefox 完美配合。 但是,Safari(版本 6.0.2)不会发送“If-Modified-Since”和“If-None-Match”标头。 这是 Safari 在第二页点击时发送的请求标头:

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/536.26.17 (KHTML, like Gecko) Version/6.0.2 Safari/536.26.17
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Cache-Control: max-age=0

该页面上链接的所有其他文件都会收到正确的请求标头,并且 Safari 在适当的情况下使用缓存文件或 304。

为什么不向 Safari 发送正确的请求标头? 我能改变什么?

谢谢你!


如果-修改-自

的注释如果-修改-自警告不要使用与内容不同的内容Last-Modified响应头:

注意:如果客户端在 If-Modified-Since 中使用任意日期 标头而不是从 Last-Modified 标头中获取的日期 同样的请求,客户端应该意识到这一事实 日期以服务器对时间的理解来解释。

您的回复不包含上一次更改,但即使确实如此,规范中也没有任何内容表明用户代理必须或应该发送 If-Modified-Since,他们只是可以。

如果-无-匹配

至于为什么 Safari 不发送如果-无-匹配打败我;你的ETag看起来有效。

一般情况下强制执行缓存

同样,一般来说,规范中没有任何内容说您必须缓存,只是当您这样做时,您必须遵守缓存控制。所以这是一种不对称的关系,您可以强制(透明)缓存与源服务器重新检查,但作为源服务器,您不能强制用户代理进行缓存。

我能做什么呢?

Safari 仅partly免费软件。如果添加 Last-Modified 没有帮助,那就没什么了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Safari 不发送“If-Modified-Since”和“If-None-Match”标头 的相关文章

  • PHP静态函数

    我有一个关于 php 中的静态函数的问题 假设我有一堂课 class test public function sayHi echo hi if I do test sayHi 它工作没有问题 class test public stati
  • 销毁Session但保留flashdata

    我在用坦克验证 http www konyukhov com soft tank auth 用于我的 CI 1 7 3 应用程序中的用户管理 一切工作正常 但我正在尝试设置flash message当用户注销时显示 问题是 this gt
  • JS 中的模板?

    我们都喜欢简单 结构化且易于遵守的代码 我们试图在外观和逻辑之间带来差异 例如 在 PHP 中 我们可以使用模板机制 即创建一个带有 php 标签的 html 格式的文件 该文件使用一些预定义的变量 这些变量可以通过逻辑负责任的脚本来使用
  • Apache 在多个虚拟主机上运行 Zend Framework 时出现间歇性 500 错误

    我们已经在一个项目上工作了几个月 没有出现任何问题 直到最近进行了一系列更新 服务器运行 Amazon Linux AMI 版本 2010 11 1 Apache 2 2 16 和 PHP 5 3 3 该项目分为几个独立的开发人员分支 作为
  • 如何在会话过期后自动更新数据库而不刷新我的页面

    您需要刷新或单击该代码 然后它才会转到索引页面 并且在会话过期后更新数据库之前 如何让会话过期后自动更新数据库 使用户活跃度为0 而无需刷新或点击页面 idletime 3600 after 1hr the user gets logged
  • 如果我有循环引用,我可以触发 PHP 垃圾回收自动发生吗?

    我似乎记得一种设置方法 destruct对于一个类 以这样的方式确保一旦外部对象超出范围 循环引用就会被清除 然而 我构建的简单测试似乎表明这并不像我预期 希望的那样 有没有一种方法可以设置我的类 以便当最外面的对象超出范围时 PHP 可以
  • 如何使用ajax post请求将模态值插入数据库?

    查看代码 div class price div
  • 将我的 JSON 字符串格式化为 PHP 中的
      有序列表

    我正在为一个宠物项目开发一个简单的 CMS 我目前有一个 JSON 字符串 其中包含菜单结构的页面 ID 和父页面 ID 的列表 我现在想将此字符串转换为嵌套或分层列表 有序列表 我尝试过循环查找 但似乎最终得到了过于复杂的子类范围 我正在
  • PHP:注意:定义会话变量的索引未定义

    我正在制作一个带有电子邮件验证器的注册系统 您典型的 使用此代码来验证 类型的事情 我希望存储一个会话变量 以便当人们在注册页面上完成帐户注册并意外导航回该页面时 它会提醒他们需要在使用前激活帐户 使这个问题如此难以诊断的原因是我以类似的方
  • 在 PHP 中,如何检查函数是否存在?

    如何检查该功能是否可用my functionPHP 中已经存在 Using function exists http php net function exists if function exists my function my fun
  • 一系列 unicode 点的正则表达式 PHP

    我正在尝试从字符串中删除所有字符 除了 字母数字字符 美元符号 下划线 代码点之间的 Unicode 字符U 0080 and U FFFF 通过这样做 我得到了前三个条件 preg replace a zA Z d foo 我如何去满足第
  • 无法在 PHP 中接收 JSON POST 请求

    我正在将 JSON 对象从 Java 传递到 PHP 我正在使用 jdk 1 8 和 WAMPserver 下面是Java代码 import java io IOException import org apache http client
  • SQLite适合并发读吗?

    在没有锁定的情况下 SQLite 数据库的性能是否能达到每秒 50 次读取左右 我正在尝试确定它是否可以在不会经常 写入 的 PHP 网站上使用 它主要是从一小部分表中读取相同的数据 没问题 并发读 写实际上会被 SQLite 序列化 所以
  • cURL 错误 28:5001 毫秒后解析超时

    我使用 WordPress 最近将我的网站从 cpanel 主机移动到带有 directadmin 面板的 Linux 服务器 转账后立即发现客户在通过EDD插件下载时出现以下错误 cURL 错误 28 5001 毫秒后解析超时 我也遇到了
  • Laravel 5 中的两个登录表单

    我一直想知道如何在 laravel 5 中制作两个登录表单一段时间 原因是因为我有一个多站点项目 我在一个项目中拥有管理站点和公共站点 我对路由进行了分组 以便管理路由回答一个域 公共路由回答另一个域 如下所示 Route group ar
  • PHP SFTP 简单文件上传

    我正在使用 phpseclib SFTP 类 并尝试上传这样的文件 sftp new Net SFTP mydomain com if sftp gt login user password exit Login Failed sftp g
  • 我怎样才能让我的卷发在刮擦之前等待几秒钟?

    所以我试图从网站上抓取一些数据 有一些必须被删除的名字列表 发生的情况是 如果有 15 个名字需要被删除 其中只有 5 个名字被删除 当我检查原始站点时 他们也以类似的方式加载数据 第一次加载网站时 仅显示五个名字 重新加载时会显示 10
  • 如何使用 OOP 从另一个 .php 到另一个 .php 的类使用 $db?

    我是 OOP PHP 的新手 自从开始 Web 开发以来我一直在使用过程 API 所以我很难迁移到 OOP 假设我有这四个 php文件和结构如下 连接 db php
  • 如果 Woocommerce 单一产品中的库存数量少于 10,请在库存数量旁边添加文本

    我发现这是作为另一个线程的评论发布的 但我不知道应该用它做什么 if product gt get stock quantity lt 10 echo Limited supply left 我想它应该有一个钩子 我试过woocommerc
  • 如何在PHP5.5上安装V8js?

    我想在 Ubuntu 12 04 上安装 PHP5 5 的 v8js 扩展 但无法使其工作 当我尝试使用 PECL 安装 v8js 扩展版本 0 2 0 最新 时 我收到以下消息 配置 错误 libv8 必须是版本 3 24 6 或更高版本

随机推荐

  • “AWSCognito”未定义

    我已经使用以下示例在 nodeJS 中实现 AWS Cognito 但我遇到了错误 AWSCognito 未定义为 no undef 参考链接 https github com aws amazon cognito identity js
  • 如何在 matplotlib 中制作分组箱线图

    我有三种算法 A B 和 C 我已经在不同的数据集上运行它们 并且希望将它们在每个数据集上的运行时间绘制为 Python 中的分组箱线图 作为我想要的视觉示例 我画了一幅糟糕的图 但希望它能表达要点 如果我的 python 数据如下所示 i
  • 无法安装 Docker - 哈希和不匹配(Ubuntu 18.04、Vagrant、Virtualbox)

    我只是无法在 Ubuntu 18 04 的新映像中安装 Docker 在 Virtualbox 中 使用 Vagrant 我正在使用官方网站的说明 https docs docker com install linux docker ce
  • 使用 SFTP 将文件从远程服务器直接复制到 Azure Blob 存储

    我有一个带有一堆静态文件的远程服务器 在Azure之外 我已在 Azure 中创建了辅助角色 并且希望使用该辅助角色通过 SFTP 将这些文件从远程服务器直接传输到我的 Blob 存储帐户 无需在本地复制到辅助角色 是否有关于如何做到这一点
  • JAXB 解组错误:预期元素为 <{ } Root>

    我正在重用其他地方生成的现有对象来解组以 String 类型传入的 XML 数据 物体 3 import java util ArrayList 4 import java util List 5 import javax xml bind
  • SQLite3 和多重处理

    我注意到当我在多处理环境中使用 sqlite3 时 它并不真正有能力也不可靠 每个进程都尝试将一些数据写入同一个数据库 以便一个连接被多个线程使用 我使用 check same thread False 选项进行了尝试 但插入的数量非常随机
  • 为什么javascript在迭代时将数组索引转换为字符串?

    这个 Javascript 逻辑让我困惑 我正在创建一个数组并将其第一个元素设置为数字 当我使用 for 循环对其进行交互时 Javascript 将数组键转换为字符串 为什么 我希望它保留一个数字 stuff stuff 0 3 for
  • PHP 电子邮件发送 BCC

    我知道有一些类似的问题 但我就是无法让它发挥作用 好的 我有一个从数据库中抓取的电子邮件列表 位于名为 emailList 的变量中 如果我将变量放入 我可以获取从表单发送电子邮件的代码 to节但是 我无法让它与密件抄送一起使用 我什至添加
  • 如何在 powershell 3 中将单个 txt 文件移动到 zip

    我正在尝试将一个文本文件复制 移动到 zip 文件 我不想解压它 复制文件并将其压缩回来 有什么方法可以直接将文本文件复制或移动到 powershell 中的 zip 中吗 当我在 powershell 中执行此操作时 当我尝试查看 zip
  • C++ Win32 未在 WM_DEVICECHANGE 上接收 DBT_DEVICEARRIVAL 或 DBT_DEVICEREMOVECOMPLETE

    我一直致力于检测 USB 插入 拔出 我已经使用 CreateWindowEx 实现了代码 并通过我的窗口进程回调传递了 WNCLASSEX 在插入和移除 USB 时 我成功收到 WM DEVICECHANGE 消息 但 wParam 始终
  • 如何将 JavaScript 变量“输出”到 HTML div 中

    我有一个 JavaScript 变量 我希望 HTML div 输出 7 我知道这很简单 但我似乎无法理解这一点 div Have 7 output here div 为 div 指定一个特定的 id 例如 div div 现在使用以下 J
  • 向上导航(操作栏的后箭头)不适用于片段

    我将抽屉布局作为我的活动的基本布局 并且我正在替换此抽屉布局内框架上的两个片段 第一个片段不会添加到片段的返回堆栈中 我在我的活动中显示汉堡包图标 我也希望在我的第一个片段中显示抽屉菜单 在第二个片段中 我禁用了汉堡包图标mActionBa
  • 是否可以使用输入值属性作为 CSS 选择器?

    是否可以使用 CSS 选择器来定位具有特定值的输入 示例 如何根据以下内容定位以下输入value United States
  • 使用 py2exe 捆绑 GTK 资源

    我正在使用 Python 2 6 和 PyGTK 2 22 6一体化安装程序在 Windows XP 上 尝试构建一个单文件可执行文件 通过py2exe 对于我的应用程序 我的问题是 当我将我的应用程序作为脚本运行时 即未内置到 exe文件
  • 当 C 预处理器宏定义两次时会发生什么?

    我定义了一个宏两次 如下所示 define a 2 define a 3 我认为任何发生a代码中将替换为2 什么时候 define a 3遇到了就没有了a代码中的 s 可以替换为3 所以2将优先 但是当我执行它的时候a被替换为3 为什么 如
  • 当我使用 XmlSerializer 反序列化时,为什么我的 DbNull 不是单例?

    我一直认为 DbNull value 是一个单例 因此你可以这样做 VB NET If someObject Is DbNull Value Then End if C If someObject DbNull Value 但最近 我使用
  • Azure 数据工厂和 SharePoint

    我有一些 Excel 文件存储在 SharePoint Online 中 我想要将 SharePoint 文件夹中存储的文件复制到 Azure Blob 存储 为了实现这一目标 我使用 Azure 门户在 Azure 数据工厂中创建一个新管
  • 写入RenderTarget后,如何高效克隆输出?

    XNA菜鸟在这里 每天都在学习 我刚刚弄清楚如何使用 RenderTarget2D 将多个纹理合成为一个 然而 虽然我可以将 RenderTarget2D 用作 Texture2D 来满足大多数用途 但有一个关键的区别 当调整后缓冲区大小时
  • Java GUI:文档对象模型

    HTML 有一个文档对象模型 Javascript 可以对其进行操作 移动 当我在 Swing 中创建 GUI 时 模型似乎非常不同 我不知道模型的名称 因为我正在创建布局管理器 并将对象粘贴在其中 我的问题 有没有办法以类似 DOM 的方
  • Safari 不发送“If-Modified-Since”和“If-None-Match”标头

    我正在使用 PHP 生成动态内容 我发送以下 HTTP 标头 HTTP 1 1 304 Not Modified Date Sun 09 Dec 2012 17 24 41 GMT Server Apache Connection keep