- 手艺 tags:
- captcha
- project
- web published: true comments: true
方式1,应用服务器负责生成验证码字符,验证码服务器主要负责验证码图片生成。
- 用户浏览器向应用服务器请求包含验证码的页面;
- 应用服务器生成验证码字符,存储在session中;应用服务器发送相关图片参数(验证码字符、宽、高、复杂度、背景色等)到验证码服务器;
- 验证码服务器返回图片地址到应用服务器;
- 应用服务器将包含验证码地址的网页发送给用户浏览器;
- 用户浏览器通过img的src方式向验证码服务器请求验证码图片;
- 验证码服务器输出验证码图片流到用户浏览器;
- 用户判读验证码图片,提交表单;
- 应用服务器取出session中的验证码字符比对,返回结果。
- 较少的HTTP请求调用
- 替换原应用中独立的验证码功能相对容易
- 验证码服务器相对简单
方式2,验证码服务器承担验证功能,应用服务器在验证中仅起到传递作用。
- 用户浏览器向应用服务器请求包含验证码的页面;
- 应用服务器发送相关图片参数(宽、高、复杂度、背景色等)到验证码服务器;
- 验证码服务器返回图片地址、惟一的会话id到应用服务器;
- 应用服务器将包含验证码地址的网页发送给用户浏览器;
- 用户浏览器通过img的src方式向验证码服务器请求验证码图片;
- 验证码服务器输出验证码图片流到用户浏览器;
- 用户判读验证码图片,提交表单;
- 应用服务器将第三步获得的会话id和用户输入的验证码字符传给验证码服务器;
- 验证码服务器进行验证,返回通过或拒绝;
- 应用服务器根据验证码服务器结果进行响应。
- 验证码服务功能完善,涵盖整个验证流程;
- 验证码服务端有详细的验证日志记录,便于数据分析;