NSUrlsession RequestCachePolicy返回304而不是200

时间:2019-07-15 09:16:42

标签: ios urlsession

我将URLSessionuseProtocolCachePolicy一起使用。我得到的是304,而不是200。

我到处搜索sessionConfig.requestCachePolicy = .useProtocolCachePolicy时返回200而不是304,但对我而言却相反。谁能告诉我原因吗?

var request = URLRequest(url: url)
request.setValue("Etag", forHTTPHeaderField: "If-None-Match")

let sessionConfig  = URLSessionConfiguration.default
sessionConfig.requestCachePolicy = .useProtocolCachePolicy
let session = URLSession(configuration: sessionConfig)
session.dataTask(with: request) { (data, response, error) in
let httpResponse = response as? HTTPURLResponse
   print(httpResponse.statusCode) //First time 200, second time onward 304
}.resume()

1 个答案:

答案 0 :(得分:0)

尝试将您的缓存策略设置为reloadIgnoringCacheData。

//

状态码304的含义如下

  • 如果客户端执行了有条件的GET请求,并且访问权限为 允许,但文档尚未修改,服务器应 回应此状态码。 304响应中不得包含 message-body,因此总是由第一个空行终止 在标题字段之后。在此处检查HTTPS状态代码。

这是代码列表

HTTPS Status Codes