验证码服务的两种方式

Mon 12 October 2009
  • 手艺 tags:
  • captcha
  • project
  • web published: true comments: true

方式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. 验证码服务端有详细的验证日志记录,便于数据分析;
欢迎大家就两种方式发表意见~