我创建了一个连接到Facebook的路由器,以便在用户访问互联网之前获取一些信息。
首先他们连接,获取强制网络门户页面,然后继续登录Facebook。自从升级到iOS7后,它无法加载facebook登录页面。在我的Mac上使用Captive Portal Assistant它没有任何问题,甚至在使用iOS版Safari的手机本身也没有问题。
这里出了什么问题?来自iOS7 Captive Portal Assistant的facebook过滤请求还是Apple在这里做了一些偷偷摸摸的东西?
似乎是problem is widespread,只与facebook有关。
更新:我与测试版合作过,几周前他们的工作正常。现在使用相同的测试版,它已经不再存在了。这是facebook解释的另一点。
问候,Cas
答案 0 :(得分:5)
自IOS 8以来,Apple已解决此问题。但由于所有iPhone 4用户无法升级到IOS 8,因此问题仍然存在。
IOS 7设备会检查以下域名:
www.appleiphonecell.com
captive.apple.com
captive.apple.com
www.apple.com
www.itools.info
www.ibook.info
www.airport.us
www.thinkdifferent.us
将此域名列入白名单会阻止登录掩码出现,因为IOS设备认为互联网正在按预期工作。这样你可以控制发生的事情,因为如果你使用普通的浏览器登录,IOS设备不会中断任何事情。
如果您不对域列入白名单,则会发生以下情况。我在具有多个IOS设备的路由器上进行了调试,它们大致相同:
要避免此行为,您必须将上面列出的域列入白名单。对于IOS用户来说,这不是一种常见的行为,但是这样,您的浏览器可以控制登录会话,而IOS设备不会像登录屏幕那样中断它。
以下网站报告了一些浅层信息:
我找不到问题的详细描述,并通过使用某些路由器和IOS设备(如iPhone和iPad)调试所有部件,找到了上面的问题。
答案 1 :(得分:0)
我刚刚测试了各种路由器设置,发现当路由器的DOMAIN字段为空
时, iOS 7并未尝试联系上述网站/网址。我的猜测是,空白域指向消费者类型的网络设置,Apple并不期望在此类网络上使用强制网络门户。如果您有权管理路由器,请查看是否可以清除DOMAIN字段(并重新启动/重新测试)。
答案 2 :(得分:0)
我找到了解决问题的方法。 (前一段时间,但我又发现了这篇文章)
首先我发现,iOS进行3次调用,首先检查,第二次获取需要显示的页面,第三次在页面加载后再次检查。然后我发现,对于页面发出的每个POST或GET操作,关于源页面的刷新,iOS会检查是否有活动的Internet连接。由于facebook api进行了大量调用,浏览器开始停止(可能与路由器上的QoS结合使用)并冻结页面。
我的解决方案:
由于我控制着我使用的路由器的DNS记录,因此我将所有域重定向到我自己的服务器。
首先我保存了检查请求,以便稍后在第3次请求回来时识别用户。
当第二个请求到来时,我只显示一个信息窗口,表明每件事情都是正确的,用户必须点击"完成"按钮。
页面已加载,因此iOS会再次检查,但我会识别用户,因此我会显示OK代码Apple也会显示。 "完成"按钮我们显示,用户有"互联网",根据iOS ..
在我显示的页面上,我指示用户打开webbrowser。当他这样做时,他打开一个页面,我的门户网站显示正确的页面(我可以根据浏览器代理检测到这个)。然后我的facebook api开始做它的工作,我们去: - )
如果有必要,如果有人需要更多关于如何检测甚至是代码示例的信息,请告诉我。
额外信息 要在您自己的服务器上捕获用户,请使用例如.htaccess将每个请求重定向到您的处理页面。请求是带有子文件的域,例如: http://captive.apple.com/getrT09Nx7G/YNrnUOulnDj/3cfrq3M40iR.html
要保持多个用户分开,请使用设备在检查互联网时尝试联系的唯一网址,在这种情况下:/getYT09Nx7G/YN1nUOulnDj/3cfMq3M40iR.html