在WIFI的应用场景中,有个很典型的应用,叫做Captive Portal,也叫Captive Web Portal(CWP)。
大致流程是:
- 用户的移动设备(例如手机)接入WIFI。
- 打开任意网页。
- 得到一个类似Login的页面,需要用户填写一些信息,然后提交。
- 认证通过后,允许自由访问网络,否则无法上网。
电信、移动等运营商经常会推出一些市区里的WIFI,很多用的就是这种方式。还有像机场等地。有个典型的应用,就是杭州的ihangzhou。
iOS,还有Mac OS,都有个功能,当接入无线网络后,会自动检测网络是否通。如果不通,则会自动弹出一个页面,让用户去登录。
Apple把这种功能叫做Captive Network Assistant(CNA)。
其原理如下:
- 发送一个HTTP/1.0的请求到 http://www.apple.com/library/test/success.html
- 接收一个回应,如果回应跟它预计的结果一致,那么认为网络是通的,就不会自动弹出页面。同时,状态栏的WIFI图标出现。流程结束。否则,进入下一步。
- 如果收到的回应不是它想要的那个,它就认为有CWP存在。
- 如果有CWP存在,iOS就会自动打