白酒清茶无别事
我在等风也等你

服务器端图片验证码验证失败问题原因

最近做项目,遇到一个问题,就是提交服务器端的图片验证码,老是提示验证码错误。再三确认我传值没出错,就向后台咨询了下,他打印了日志看了下。说提交验证的时候session为空。大概意思就是每次请求和提交验证不是同一用户。好吧,既然知道原因了,咱们就来解决一下吧。

 

http是无状态协议,不对之前的请求和响应管理,为了解决这个问题而引入了cookie。

用个通俗的比喻,cookie就类似于单机游戏的存档文件,每次启动游戏,如果有存档文件,就可以继续,如果没有,那么每次都要重新创建一份游戏存档,区别在于游戏存档文件没有过期时间,cookie会过期。

如上图,就很好的说明了cookie的用处。

好了,接下来咱们就开始干吧。我们在入口类设置全局的cookie。这样就可以在很小的改动下,解决这个问题。

/**
* 设置全局cookie
*/
NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL: [NSURL URLWithString:url_verification]];
NSData *cookiesdata = [NSKeyedArchiver archivedDataWithRootObject:cookies];
if([cookiesdata length]) {
NSArray *cookies = [NSKeyedUnarchiver unarchiveObjectWithData:cookiesdata];
NSHTTPCookie *cookie;
for (cookie in cookies) {
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
}
}

这样设置以后,全局都是一个用户,但是cookie一般有时效性的。这个可以根据自己的需要去设置时间。

赞(0) 打赏
未经允许不得转载:努力努力再努力 » 服务器端图片验证码验证失败问题原因
分享到: 更多 (0)

评论 1

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    其实后台方面也可以解决该问题

    文可颂3年前 (2018-09-11)回复

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏