前言
最近攝像頭直播的隱私安全問(wèn)題頗受關(guān)注壁顶,各種隱私暴露的傳聞不絕于耳近零,據(jù)說(shuō)都驚動(dòng)了新聞聯(lián)播诺核。而我們公司作為其中一員,難免受到了波及久信,于是領(lǐng)導(dǎo)召集速速開(kāi)會(huì):視頻流有木有加密窖杀,上行通道有木有,下行通道有木有加密裙士,賬號(hào)有木有被盜的可能入客,有木有被抓包的可能。腿椎。桌硫。最后的結(jié)果是,新的需求啃炸,在登錄注冊(cè)模塊加登錄錯(cuò)誤次數(shù)限制和圖片驗(yàn)證碼驗(yàn)證流程铆隘。。南用。
正文
閑話少說(shuō)膀钠。
這次的需求在做接口測(cè)試時(shí)發(fā)現(xiàn)點(diǎn)小問(wèn)題,請(qǐng)求下來(lái)的圖片驗(yàn)證碼總是驗(yàn)證不通過(guò)训枢,后臺(tái)返回驗(yàn)證碼錯(cuò)誤托修。好了,又到了發(fā)揮交流能力的時(shí)候了恒界。把相關(guān)數(shù)據(jù)發(fā)給后臺(tái)兄弟睦刃,后臺(tái)兄弟巴拉巴拉巴拉一頓查,然后告訴我請(qǐng)求圖片驗(yàn)證碼地址的UA(User-Agent)跟下載圖片的UA不同十酣,導(dǎo)致驗(yàn)證失敗涩拙。
UA不同际长?我們的網(wǎng)絡(luò)請(qǐng)求用的AFNetWorking框架,而圖片用的SDWebImage兴泥。我們的網(wǎng)絡(luò)層對(duì)AF做了一層封裝工育,設(shè)置了特定的請(qǐng)求頭,而SD并沒(méi)有專門設(shè)置過(guò)搓彻,因?yàn)橹安](méi)有想到圖片也會(huì)驗(yàn)證請(qǐng)求頭信息如绸。好了,問(wèn)題找到旭贬,那就好解決了怔接。Just show the code。
這是設(shè)置AF請(qǐng)求頭的:
[_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;
}
結(jié)語(yǔ)
公司什么時(shí)候才能來(lái)個(gè)做開(kāi)發(fā)的妹子呢稀轨?