美文网首页
AFNetworking请求,接口报301,302错误

AFNetworking请求,接口报301,302错误

作者: 你就在世界的中心 | 来源:发表于2019-05-21 11:21 被阅读0次

    首先我们先理解一下301,302是什么意思

    · 301 Moved Permanently 永久移动

    被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个URI之一。如果可能,拥有链接编辑功能的客户端应当自动把请求的地址修改为从服务器反馈回来的地址。除非额外指定,否则这个响应也是可缓存的。
    新的永久性的URI应当在响应的Location域中返回。除非这是一个HEAD请求,否则响应的实体中应当包含指向新的URI的超链接及简短说明。
    如果这不是一个GET或者HEAD请求,因此浏览器禁止自动进行重定向,除非得到用户的确认,因为请求的条件可能因此发生变化。

    注意: 对于某些使用HTTP/1.0协议的浏览器,当它们发送的POST请求得到了一个301响应的话,接下来的重定向请求将会变成GET方式。

    ·302 Found 临时移动

    请求的资源现在临时从不同的URI响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-Control或Expires中进行了指定的情况下,这个响应才是可缓存的。
    我在项目中一个上传图片的接口遇到了Nginx报301,302的问题,带有一个Location,将这个Location值作为自动重定向的地址,之后每次请求这个接口都会重定向到Location这个地址去做请求,除非卸载应用重新安装,否则这个响应是一直缓存的。试了很多方法,比如:拦截重定向,取消重定向都不起作用,最后想到了清除URLCache
    swift代码

    清除某一个请求的缓存:
    let myRequest = URLRequest(url: URL(string: requestUrl)!) URLCache.shared.removeCachedResponse(for: myRequest)
    清除所有请求的缓存
    URLCache.shared.removeAllCachedResponses()

    OC代码

    清除所有请求的缓存
    [[NSURLCache sharedURLCache] removeAllCachedResponses];
    放在请求接口之前每次做清除response缓存

    相关文章

      网友评论

          本文标题:AFNetworking请求,接口报301,302错误

          本文链接:https://www.haomeiwen.com/subject/qbudzqtx.html