【问题标题】:Ignoring 301 Permanent Redirect with NSURLConnection使用 NSURLConnection 忽略 301 永久重定向
【发布时间】:2014-10-29 17:13:33
【问题描述】:

我使用的一个我无法控制的 API 在不应该使用 301 永久重定向的情况下使用它。我需要我的 NSURLConnection 忽略它在过去被永久重定向以供将来请求的事实。

以下是 Clarity 的示例。

我正在连接到http://stupidapi.com/users/frank/profilepicture。它执行 301 重定向到 http://profilepictures.stupidapi.com/52435346324,其中包含我正在寻找的个人资料图片。

可以说,后来弗兰克登录了他的帐户并更改了他的个人资料图片。现在,当我想要新的个人资料图片时,我会转到 http://stupidapi.com/users/frank/profilepicture,但由于我提出的第一个请求是 301 永久重定向,它会将我发送回 http://profilepictures.stupidapi.com/52435346324,这是旧图片。如果这是我第一次请求,它会将我发送到http://profilepictures.stupidapi.com/34535476557 以获取新图片。

如何让 NSURLConnection 始终转到最新版本的图片?

我尝试将 NSURLRequest 缓存策略设置为 NSURLRequestReloadIgnoringCache

request.cachePolicy = NSURLRequestReloadIgnoringCache;    

我还尝试在使用

发出任何请求之前清除 NSURLCache
[NSURLCache sharedURLCache] removeAllCachedResponses];

到目前为止都没有工作。感谢您的帮助!

【问题讨论】:

  • [[NSURLCache sharedURLCache] removeCachedResponseForRequest:request] 呢?
  • 我会试一试,谢谢
  • 试过了,结果一样。这样的东西真的被系统缓存了吗?似乎即使我删除我的应用并重新安装它,我仍然会被重定向到旧版本。
  • Safari 加载它没有问题吗?
  • 您是否检查过实际发送的请求,它可能缓存在路由器中等。使用 Charles Proxy 快速检查可能会有所帮助。

标签: ios cocoa-touch http redirect nsurlconnection


【解决方案1】:

好的,所以我想出了一个令人讨厌的解决方案,但它是我能想到的最好的。

指定的原始 URL 不关心大小写,所以基本上每次我向它发送请求时,我都会将 url 特定部分中的每个字母随机设置为大写或小写。

基本上不是去http://stupidapi.com/users/frank/profilepicture,而是去http://stupidapi.com/users/FrAnk/profilepicture。如果我点击了一张尚未缓存的图片,那么我会得到一张新图片。

对于我的特定用例,这已经足够了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-24
    • 2013-07-17
    • 1970-01-01
    • 2012-05-31
    • 2015-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多