问题标签 [http-status-code-304]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
http-status-code-304 - 如何防止服务器回复304?
我需要知道我可以采取哪些措施来阻止服务器回复 304。
.htaccess - 是否可以使用 .htaccess 返回 304 Not Modified
如果用户在他们的浏览器中缓存了一个文件,并且他们发送了一个带有If-Modified-Since
标头的 http 请求,有没有办法304 Not Modified
使用 .htaccess 自动为他们提供响应?
http - 浏览器在收到 HTTP 304 后显示页面的无缓存版本
它发生在我的 Wordpress 和 nginx 配置中,但 IMO 是浏览器/HTTP 相关问题。
一切都是关于一页的,它以两个版本出现,用于登录用户和匿名用户。设想:
- Wordpress 正在为应缓存的用户页面提供服务(HTTP 200)
- Wordpress 正在为登录用户提供不应缓存的页面(没有缓存标头的 HTTP 200)。
- 注销后,我希望用户收到第 1 页,但他正在从浏览器缓存中获取第 2 页。Nginx 正在发送 HTTP 304,因此浏览器应该从浏览器内存或服务器中获取最后缓存的页面。但它没有发生。
这些是上述情况的 HTTP 标头:http: //pastebin.com/nJAxLQSq
.htaccess - 过期和 304 未修改请求
为什么当我设置 Expires 并禁用 Etags 时,我仍然收到 304 响应?
这是我的 .htaccess 文件:
c# - Internet Explorer 通过 Ajax Pull 显示缓存数据,结果为 304
我有一个在 Chrome 和 FF 中运行良好的工具。但是对于任何版本的 IE,浏览器都会显示缓存信息,而不是通过 Ajax 拉取来检索数据。
这是我的设置:
我有我循环的标准:
ImageActionLink 只是一个帮助器,它创建一个内部带有图像的 ActionLink,我尝试使用普通的 ActionLink 执行此操作,并且问题也发生了,因此您可以忽略它。我还尝试通过一个普通<img>
的 jQuery 触发器来更改整个 ImageActionLink,没有区别。
发生的情况是,当用户单击“编辑”链接时,它将对“AddOrEditCriteria”进行 ajax 调用,该 ActionResult 找到条件,并将 PartialView 表单显示回 div“#AddOrEditCriteriaFormContainer”。到目前为止一切顺利,这在所有浏览器中都可以正常工作。
但是,当我第二次单击该编辑时,IE 不执行 ajax 调用,而是简单地显示缓存中的 PartialView,当所有其他浏览器再次正确提取数据时(这是必需的,因为该视图允许编辑标准,同时它可能已被其他人编辑)。
奇怪的是 IE 正在调用,但不知何故它永远不会到达服务器,它只是通过使用 Result 304 来使用缓存。你可以从这个网络捕获中看到:
最后一个是第一个发生的,前两个是在之后完成的,并且得到了 304 回报。
我找到了一种方法来修复它,方法是向带有随机数的 ajax 调用添加“breakcache”参数,但这似乎不是一个好的解决方案。
这个问题一直困扰着我们的用户,因为他们看到了不应该因为 IE 而更新的数据。
jquery - Jquery.get() 在 IE8/9 中不起作用。不会加载缓存页面 304 未修改
- 代码点火器版本“2.0.3”
- jQuery 1.7
- Jquery 历史插件
我有一个以 ajax 方式构建的 CodeIgniter 应用程序。我有一个功能如下:
它所做的一切都是使用 ajax_link 类捕获对锚元素的点击,并将响应发送到处理该响应数据到页面中的放置的函数。
这适用于 Chrome 和 FF。我单击链接,jQuery 发出获取请求,我返回一个 JSON 对象,我的 history.pushState() 函数将一些 json 数据注入我的页面。
我遇到的问题是在 IE8 中。基本上发生的事情是当我第一次打开应用程序时,链接有效,但它们只有效一次。我第二次点击它的链接:
- 有没有ajax
GET
- 收到 304(未修改)的响应
- 不调用
jQuery.get()
回调函数,因此停止死亡。
如果我清除缓存,它会再次工作。所以我的假设是 IE 正在执行获取请求,但随后它发现它在过去已经请求了完全相同的文件......因此完全停止了该过程。
有人知道解决这个问题吗?我已经查看了 304 错误和 IE 中 ajax 和缓存错误的提及,但还没有发现与我相同的问题。
非常感谢任何帮助
(在 Windows 虚拟机 IE8 和 Internet Explorer 9 中的 IE 8 模式下测试)
解决了
只需将以下代码添加到我的 document.ready 函数中,问题就消失了。
http-status-code-304 - firefox 不发送标头:if-modified-since 在从响应中接收 Last-modified 之后
firefox 在从响应中接收 Last-modified 后不发送标头:if-modified-since。eg:在火狐浏览器的webview中访问加载一个网站,多次加载该页面后,按F12,在控制台显示如下截图。
我发现请求标头中没有“if-modified-since”,这就是为什么?
我认为响应状态码应该是 304,但它是 200。
谢谢..
asp.net-mvc-4 - mvc 4捆绑和缩小-刷新时没有得到304(未修改)
我正在尝试 MVC 4 Beta 的捆绑和缩小 thru System.Web.Optimization
。我希望我使用它的网站304 (Not Modified)
在我点击刷新时会收到一个。
我认为 src 对我的 js 包/desktop-js-bundle?v=D33JhbMl9LHkXSPBj1tfRkRI0lHeYVmbSMQqD59bXHg1
(带有那个版本号)的意义在于,版本号只有在服务器上包中的一个文件被修改时才会改变。然而,每次我点击刷新并监控 Chrome 中的“网络”选项卡时F12,它都会发出具有相同版本号的请求并获得200
状态。
为什么它不只返回 304?,这将减少负载并提高性能。谢谢!
jquery - 为什么 jquery ajax 在获取 304 状态码时不调用从缓存中填充数据变量?
我在我的移动应用程序中使用 jquery ajax 通过 restful api 获取我的 json 数据。我的 restful api 已配置为支持 etags。我的 restful api 托管在另一个子域上,所以我配置了 CORS 来处理跨域调用。在我的开发环境中,我已将我的移动应用程序配置为在 test.domain.com 上运行,并将 restful api 配置为在 test2.domain.com 中运行,以便我可以测试跨域调用。所有这些都很棒!我的 ajax 调用的行为与我对 etag 的预期完全一样:
调用获取 json 内容:
我得到一个状态 200 并且成功回调中的数据变量有数据。再次调用同一资源(不期望任何更改)我得到状态 304,并且成功回调中的数据变量具有数据(从缓存加载)。
到目前为止,一切都很好。
现在,如果我将我的开发环境配置为在同一个域上同时拥有我的移动应用程序和 restful api,这就是我遇到问题的地方。
我得到一个状态 200 并且成功回调中的数据变量有数据。再次调用同一资源(不期望任何更改)我得到状态 304 和未定义的数据变量!!!!
任何想法为什么使用此配置 jquery 不会用缓存中的内容填充数据变量?我还在我的 ajax 调用中删除了 CORS 和跨域设置,但仍然没有运气。我正在使用 jquery 1.7.1。
ajax - 响应中的 200 而不是 304
简单的问题:
onResponseReceive getStatusCode
返回 200 而不是 304。Fiddler 告诉我响应状态码是 304。
我该怎么做:我不断地轮询服务器以获取新数据(每 10 秒)。如果数据没有改变,它会响应 304,否则会响应 200 和整个数据。在 onResponseReceived 方法中,状态码始终为 200,数据始终存在。
如何获得 304 的任何提示。我阅读了一些关于 If-Modified-Since 的内容,这会导致整个数据重新发送(使用代码 200),但我实际上想要 304。我也不想通过以下方式比较数据手,看看有没有变化。
GWT 代码:
回复:
最好的问候,斯特凡