当我发送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响应标头时是否还有其他事项需要注意?
我有一个REST API,允许使用HTTP POST修改资源.客户端可能会提交POST请求,导致不修改资源.我正在考虑使用通常用于条件响应的304响应来表明请求没有效果.我没有找到任何这方面的例子,所以我想我会问这里,看看是否有其他人这样做或对此有意见.
我有一个程序,它使用请求模块发送一个get请求,它正确地响应304"Not Modified".发出请求后,我检查确认response.status_code == requests.codes.ok,但此检查失败.请求不将304视为"ok"吗?
我正在尝试禁用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) 我的应用程序如何利用etags,并引入流/分块编码引入任何复杂性?
在进行HTTP流式传输时Transfer-Encoding: chunked,Content-Length无法发送,因为它通常是未知的.
据我所知,当浏览器利用etags时,他们需要知道Content-Length.如果提供了etag但不提供Content-Length,则浏览器将永远不会发送If-None-Match.
有没有解决的办法?
它是否ExpiresDefault足以避免来自服务器的HTTP状态304响应的Apache指令?我已经设置ExpiresDefault "access plus 10 years"但是"GET /assets/template/default/css/style.min.css?v=1 HTTP/1.1"当我在本地PHPMyFAQ网站上打开任何页面时,我仍然看到带有304响应的日志条目.清空浏览器缓存似乎没有任何改变.
我有一个生成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测试服务器获得解决方法?有线索吗?
最好的祝福,
我遇到了AJAX和Internet Explorer 9的问题:它在收到对初始etagged GET的响应后停止轮询我们的服务器.
它假装发出响应请求,如"响应HTTP/1.1 304未修改,状态200正常"(是的,一个响应中的两个不同的状态代码)和相同的ETag(应该随时间变化)但它们实际上都没有出现在服务器中日志.
此问题仅出现在IE中,相同的代码在Chrome和FF中运行良好.
也许将{cache:false}传递给jQuery.ajax()可能有所帮助,但我想知道是否有办法在服务器端解决问题.
我们的ETag使用可能存在错误.
谢谢!
玩弄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
当我的服务器以状态代码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