SDWebImage设置请求头的User-Agent

前言

最近摄像头直播的隐私安全问题颇受关注,各种隐私暴露的传闻不绝于耳,据说都惊动了新闻联播。而我们公司作为其中一员,难免受到了波及,于是领导召集速速开会:视频流有木有加密,上行通道有木有,下行通道有木有加密,账号有木有被盗的可能,有木有被抓包的可能。。。最后的结果是,新的需求,在登录注册模块加登录错误次数限制和图片验证码验证流程。。。

正文

闲话少说。
这次的需求在做接口测试时发现点小问题,请求下来的图片验证码总是验证不通过,后台返回验证码错误。好了,又到了发挥交流能力的时候了。把相关数据发给后台兄弟,后台兄弟巴拉巴拉巴拉一顿查,然后告诉我请求图片验证码地址的UA(User-Agent)跟下载图片的UA不同,导致验证失败。

UA不同?我们的网络请求用的AFNetWorking框架,而图片用的SDWebImage。我们的网络层对AF做了一层封装,设置了特定的请求头,而SD并没有专门设置过,因为之前并没有想到图片也会验证请求头信息。好了,问题找到,那就好解决了。Just show the code。

这是设置AF请求头的:
[_httpSessionManager.requestSerializer setValue:[self userAgent] forHTTPHeaderField:@"User-Agent"];
SD也加上:
[[SDWebImageManager sharedManager].imageDownloader setValue:[self userAgent] forHTTPHeaderField:@"User-Agent"];
这是我们的User-Agent:

- (NSString *)userAgent {
    NSString *appName = [[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleExecutableKey] ?: [[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleIdentifierKey];
    NSString *appVersion = IEMIEMAPPBUILDVERSION;
    NSString *platform = stringFromDeviceVersion([SDVersion deviceVersion]);
    NSString *systemVersion = [[UIDevice currentDevice] systemVersion];
    
    NSString *userAgent =
    [NSString stringWithFormat:@"%@/%@(%@;iOS %@)", appName, appVersion, platform, systemVersion];
    
    return userAgent;
}

结语

公司什么时候才能来个做开发的妹子呢?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、基础知识篇:Http Header之User-AgentUser Agent中文名为用户代理,是Http协议中...
    iPhone阅读 15,841评论 0 13
  • 经过多次尝试,模拟登录淘宝终于成功了,实在是不容易,淘宝的登录加密和验证太复杂了,煞费苦心,在此写出来和大家一起分...
    追不到的那缕风阅读 1,725评论 0 3
  • 常见试题 行内元素:会在水平方向排列,不能包含块级元素,设置width无效,height无效(可以设置line-h...
    他大舅啊阅读 2,471评论 1 5
  • 深入浅出HTTP协议(WEB开发和面试必备) 1.基础概念篇 a.简介 HTTP是Hyper Text Trans...
    半世韶华忆阑珊阅读 1,236评论 0 7
  • 网上关于cocoapods的教程很多,关于它的优点我不赘述;但是我根据多次安装的经验,把我遇到的问题写一下,以...
    飞鱼湾阅读 108评论 0 1