Tag: etag

ETag和If-None-Match HTTP头不起作用

我有一个文件在我的networking服务器 ,我下载到我的应用程序,每次我访问它,因为它可能的文件内容可能会改变但如果它被改变,我想下载的时间只有这样带宽可以被保存,幸好这就是这个ETag和If-None-Match 头域是用于。 当我第一次发出请求时,我从HTTP响应头中检索ETag 在随后的下载文件的请求中,我会附加If-None-Match headerfield的Etag值,以便如果没有改变,那么我会得到HTTP响应状态码304,否则如果有在文件中更改。 注意: 当我尝试在高级REST客户端应用程序在铬中的上述步骤,它工作正常,因为它应该是,但是当我尝试在iOS中,我总是得到响应代码200,但它应该已经给我304后续请求。 这里是我使用的示例代码 var request1 = NSMutableURLRequest(URL:NSURL(string: "http://10.12.1.101/Etag/ringtone1.mp3")!) let Etagvalue="\"36170-52c1cc36d9b40\"" var session1 = NSURLSession.sharedSession() request1.HTTPMethod = "GET" var err: NSError? request1.addValue(Etagvalue, forHTTPHeaderField: "If-None-Match") var task = session1.dataTaskWithRequest(request1, completionHandler: {data, response, error -> Void in print("response: \(response)") }) 这是回应 响应:可选({URL: http : //10.12.1.101/Etag/ringtone1.mp3 } {状态码:200,标题{“Accept-Ranges”= bytes; Connection =“Keep-Alive”;“Content-Length” = 221552;“Content-Type”=“audio […]

NSURLCache和ETags

NSURLCache是​​否透明地处理服务器接收的ETags? 我的意思是:是否会自动为每个URL请求存储ETags,然后在提交给相同URL的请求时发送相应的IF-None-Match? 或者我必须自己pipe理它?