我需要解决一个问题,即对网站的初始(或可能唯一)HTTPS 调用被强制门户阻止,而不是由我管理。解决方案是要求用户导航到仅限“http”的站点,以便告诉软件堆栈通过门户登录。
从应用程序的角度来看,我看到预期的网站是:
- SSL 不可用(任何 ICMP 响应代码)
- SSL 具有来自门户的不受信任的证书
- SSL 具有不受信任的证书和意外的内容(门户登录)
这些行为中的每一种都会导致各种软件堆栈、操作系统和自制软件产生不同的结果。
在以下情况下,处理强制门户的最兼容方式是什么:
- 访问提供受保护 REST 服务、SPA 应用程序或类似服务的网站?
- 从 iOS、Android 上的应用程序请求,该应用程序利用该平台的内置 HTTP 框架
- 从不利用平台 HTTP 框架,而是使用 OpenSSL、BouncyCastle 或 Monotouch/MonoDroid 的应用程序请求
- 从台式电脑(OSX 或 Windows)请求
wrt #4,我知道 OSX 将尝试联系http://captive.apple.com/hotspot-detect.html 以确定301/302
重定向是否到位......或者门户是否只是通过 MITM 直接替换内容/内容注入。