标签: http-status-code-304

我想与304响应一起发送哪些标头?

当我发送304响应时.浏览器将如何解释我与304一起发送的其他标头?

例如

header("HTTP/1.1 304 Not Modified");
header("Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT");
Run Code Online (Sandbox Code Playgroud)

这是否会确保浏览器不会发送另一个有条件的GET请求(也没有任何请求),直到$ offset时间"用完"?

另外,其他标题呢?

我应该像304一样发送这样的标题:

header('Content-Type: text/html');
Run Code Online (Sandbox Code Playgroud)

我必须发送:

header("Last-Modified:" . $modified);
header('Etag: ' . $etag);
Run Code Online (Sandbox Code Playgroud)

为确保浏览器在下次$ offset已"用完"时发送条件GET请求,或者只是保存旧的Last Modified和Etag值?

发送304响应标头时是否还有其他事项需要注意?

php get http-headers http-status-code-304

16
推荐指数
2
解决办法
7643
查看次数

使用HTTP 304响应POST

我有一个REST API,允许使用HTTP POST修改资源.客户端可能会提交POST请求,导致不修改资源.我正在考虑使用通常用于条件响应的304响应来表明请求没有效果.我没有找到任何这方面的例子,所以我想我会问这里,看看是否有其他人这样做或对此有意见.

rest post http http-post http-status-code-304

16
推荐指数
2
解决办法
8918
查看次数

请求.codes.ok是否包含304?

我有一个程序,它使用请求模块发送一个get请求,它正确地响应304"Not Modified".发出请求后,我检查确认response.status_code == requests.codes.ok,但此检查失败.请求不将304视为"ok"吗?

python http-status-code-304 python-requests

12
推荐指数
2
解决办法
2万
查看次数

如何防止nginx中的"304 Not Modified"?

我正在尝试禁用nginx中的所有缓存以进行测试.

我设置了以下行

add_header Cache-Control no-cache;
Run Code Online (Sandbox Code Playgroud)

我看到页面本身没有被缓存,但是图像,css和javascripts都是.我怀疑这是因为Firefox正在获得"304 Not Modified"标题.

有没有办法防止它?

PS:

我想我是自己找到的.Firefox现在一直显示'200 OK'.

这是正确的方法吗?

我已经添加

if_modified_since off;
add_header Last-Modified "";
Run Code Online (Sandbox Code Playgroud)

header nginx http-status-code-304

11
推荐指数
2
解决办法
2万
查看次数

同时利用etags和chunked编码?

更新的问题

我的应用程序如何利用etags,并引入流/分块编码引入任何复杂性?


原始问题

在进行HTTP流式传输时Transfer-Encoding: chunked,Content-Length无法发送,因为它通常是未知的.

据我所知,当浏览器利用etags时,他们需要知道Content-Length.如果提供了etag但不提供Content-Length,则浏览器将永远不会发送If-None-Match.

有没有解决的办法?

etag http-content-length http-status-code-304 if-none-match

11
推荐指数
1
解决办法
790
查看次数

避免304(未修改)响应

它是否ExpiresDefault足以避免来自服务器的HTTP状态304响应的Apache指令?我已经设置ExpiresDefault "access plus 10 years"但是"GET /assets/template/default/css/style.min.css?v=1 HTTP/1.1"当我在本地PHPMyFAQ网站上打开任何页面时,我仍然看到带有304响应的日志条目.清空浏览器缓存似乎没有任何改变.

apache http http-status-codes http-status-code-304

11
推荐指数
1
解决办法
2万
查看次数

Django - http代码304,如何在testserver中解决?

我有一个生成http 304的CSS代码:

[08/Nov/2011 15:22:07] "GET /site_media/logo1.gif HTTP/1.1" 304 0
Run Code Online (Sandbox Code Playgroud)

如何使用Django测试服务器获得解决方法?有线索吗?

最好的祝福,

django django-templates http-status-code-304

10
推荐指数
2
解决办法
8187
查看次数

收到ETag后,IE9假装304

我遇到了AJAX和Internet Explorer 9的问题:它在收到对初始etagged GET的响应后停止轮询我们的服务器.

它假装发出响应请求,如"响应HTTP/1.1 304未修改,状态200正常"(是的,一个响应中的两个不同的状态代码)和相同的ETag(应该随时间变化)但它们实际上都没有出现在服务器中日志.

此问题仅出现在IE中,相同的代码在Chrome和FF中运行良好.

也许将{cache:false}传递给jQuery.ajax()可能有所帮助,但我想知道是否有办法在服务器端解决问题.

我们的ETag使用可能存在错误.

谢谢!

etag internet-explorer xmlhttprequest http-status-code-304

10
推荐指数
1
解决办法
4526
查看次数

响应代码304和200时的排球异常错误

玩弄Volley库时,我注意到在进行POST时JsonObjectRequest,如果服务器返回代码304或200且响应中没有数据,则(response.data)Volley将其解释为错误响应,而不是成功.

我设法通过Response<JSONObject> parseNetworkResponse(NetworkResponse response)在类中的方法中添加几行代码来解决它JsonObjectRequest.java.

@Override
protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
    try {
        if (!response.notModified) {// Added for 304 response
            String jsonString = new String(response.data,
                    HttpHeaderParser.parseCharset(response.headers));
            return Response.success(new JSONObject(jsonString),
                    HttpHeaderParser.parseCacheHeaders(response));
        } else // Added for 304 response
            return Response.success(new JSONObject(),HttpHeaderParser.parseCacheHeaders(response));
    } catch (UnsupportedEncodingException e) {
        Log.v("Volley", "UnsupportedEncodingException " + response.statusCode);
        if (response.statusCode == 200)// Added for 200 response
            return Response.success(new JSONObject(), HttpHeaderParser.parseCacheHeaders(response));
        else
            return Response.error(new ParseError(e));
    } catch (JSONException je) {
        Log.v("Volley", "JSONException …
Run Code Online (Sandbox Code Playgroud)

android request http-status-code-304 android-volley jsonobject

8
推荐指数
1
解决办法
7963
查看次数

Angularjs应用程序在从firebase托管服务器检索html模板时不处理304响应

当我的服务器以状态代码304响应时,我有一些用户无法访问我的angularjs应用程序上的某些模板.Angularjs正在记录[$compile:tpload],如下所示,视图不会显示给用户.因此,某种角度不会从缓存中获取视图.问题似乎非常间歇性地发生,并且在干净的浏览器缓存+页面刷新之后页面再次开始正常工作.

我用ui-router v0.3.2运行Angularjs v1.6.6并且我在firebase托管上托管我的静态文件.它是在最新版本上修复的吗?否则,我该如何处理这个案子呢?

[$ compile:tpload] http://errors.angularjs.org/1.6.6/$compile/tpload?p0=%2Fjs%2Ftemplate1%template1.html&p1=304

可能是未处理的拒绝:{"data":"","status":304,"config":{"method":"GET","transformRequest":[null],"transformResponse":[null],"jsonpCallbackParam" : "回调", "缓存":{}, "头":{ "接受": "text/html的"}, "URL": "/ p/p.html"}, "状态文本": ""," xhrStatus ":" 完成"}


使用LogRocket捕获请求/响应

URL: "https://url.com/js/p/a/template.html"
method: "GET"
status: 304
duration: "00:00.061"

REQUEST
headers
  Accept: "application/json, text/plain, */*"
body: null
credentials: ""
mode: ""
referrer: ""


RESPONSE
headers
  cache-control: "max-age=3600"
  date: "Sat, 15 Sep 2018 20:03:12 GMT"
  etag: ""f166a7577a895x3f7dcc5accae97dcba""
  expires: "Sat, 15 Sep 2018 17:45:33 GMT"
  vary: "Accept-Encoding"
  via: "1.1 varnish" …
Run Code Online (Sandbox Code Playgroud)

http-status-code-304 angularjs firebase angular-ui-router firebase-hosting

8
推荐指数
1
解决办法
322
查看次数