验证码服务的两种方式

方式1,应用服务器负责生成验证码字符,验证码服务器主要负责验证码图片生成。

  1. 用户浏览器向应用服务器请求包含验证码的页面;
  2. 应用服务器生成验证码字符,存储在session中;应用服务器发送相关图片参数(验证码字符、宽、高、复杂度、背景色等)到验证码服务器;
  3. 验证码服务器返回图片地址到应用服务器;
  4. 应用服务器将包含验证码地址的网页发送给用户浏览器;
  5. 用户浏览器通过img的src方式向验证码服务器请求验证码图片;
  6. 验证码服务器输出验证码图片流到用户浏览器;
  7. 用户判读验证码图片,提交表单;
  8. 应用服务器取出session中的验证码字符比对,返回结果。

这种方式的优点:

  1. 较少的HTTP请求调用
  2. 替换原应用中独立的验证码功能相对容易
  3. 验证码服务器相对简单

方式2,验证码服务器承担验证功能,应用服务器在验证中仅起到传递作用。

  1. 用户浏览器向应用服务器请求包含验证码的页面;
  2. 应用服务器发送相关图片参数(宽、高、复杂度、背景色等)到验证码服务器;
  3. 验证码服务器返回图片地址、惟一的会话id到应用服务器;
  4. 应用服务器将包含验证码地址的网页发送给用户浏览器;
  5. 用户浏览器通过img的src方式向验证码服务器请求验证码图片;
  6. 验证码服务器输出验证码图片流到用户浏览器;
  7. 用户判读验证码图片,提交表单;
  8. 应用服务器将第三步获得的会话id和用户输入的验证码字符传给验证码服务器;
  9. 验证码服务器进行验证,返回通过或拒绝;
  10. 应用服务器根据验证码服务器结果进行响应。

这种方式的优点:

  1. 验证码服务功能完善,涵盖整个验证流程;
  2. 验证码服务端有详细的验证日志记录,便于数据分析;

欢迎大家就两种方式发表意见~

8 thoughts on “验证码服务的两种方式

    • @Marshall, reCaptcha.net是用验证码做ocr,可是我至今都不理解如果他们自己都不知道图片上的文本的话如何实现验证呢

  1. Pingback: Orzcc Online » Blog Archive » Anti-spam UNITED STATES

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>