Facebook.com and the iOS7 Captive Portal Detection

前端 未结 3 1775
粉色の甜心
粉色の甜心 2021-02-04 21:21

I created a router that connects to facebook to get some info before a user may access the internet.

First they connect, get the Captive Portal Page and then continue to

3条回答
  •  无人及你
    2021-02-04 21:45

    This problem was fixed by Apple since IOS 8. But as all iPhone 4 users can't upgrade to IOS 8 this problem is still one.

    The IOS 7 devices check for the following domains:

    www.appleiphonecell.com
    captive.apple.com
    captive.apple.com
    www.apple.com
    www.itools.info
    www.ibook.info
    www.airport.us
    www.thinkdifferent.us
    

    Whitelisting this domains stops the login mask to be appearing as the IOS device thinks, that the internet is working as expected. This way you have control on the things which happens, as the IOS device does not interrupts anything, if you use a normal browser for login.

    If you don't whitelist the domains, the following thing happens. I debugged it on routers with several IOS devices and they all did mostly the same:

    1. If you connect to a wifi, the IOS device tries to connect to one of the domains, which are listed above. If it can contact one of the domains, it tries another one. If it can't, it starts the redirect, which is controlled by the router. Sometimes it query one or more domains, before it thinks, that the internet is working.
    2. After the check, the login screen redirects to your router and then to the login screen of your captive portal. This behavior stayed the same as it was on IOS 6 or before.
    3. Now you start an oauth login to a 3rd party provider like Facebook, Google or Twitter. And now the difference appears. You can check it on a router, if you run it in debug mode. As the IOS device goes to an other domain for oauth login (like www.facebook.com) the iPhone thinks, that something changed and starts to query one of the apple domains, which are listed above. The user sees only a white screen and in the background the IOS device tries to contact one of the domains repeatedly. For the user this seems to be an error, as the screen stays white or takes very long to show the login on the 3rd party provider. Sometimes it stops loading and nothing happens forever.

    To avoid this behavior, you must whitelist the above listed domains. This is a not a common behavior for IOS users, but this way, your browser have the control of the login session and the IOS device don't interrupt it as it does with the login screen.

    Some shallow parts of information is reported on the following sites:

    • https://supportforums.cisco.com/docs/DOC-36523
    • http://www.cadincweb.com/why-your-apple-ios-7-device-wont-connect-to-the-wifi-network
    • https://discussions.apple.com/thread/5355766

    I couldn't find a detailed description of the problem and found the one above myself by debugging all parts with some routers and IOS devices like iPhones and iPads.

提交回复
热议问题