服务器配置:
Windows 10 专业版
ColdFusion 2016 标准版
IIS 10
我有一个 Web 应用程序,它使用整个应用程序中的内置默认文档模块来模糊文件名。当我尝试通过 HTTPS 访问指向文件夹(例如 1)https://example.com/
、2)https://example.com/folder/
等的网站 URL 时,这些文件夹映射到 iPhone 6 或更早版本的 iPad(我随时可以使用这些设备进行测试)上的 Safari 或 Chrome,连接似乎会挂起一段时间,然后最终失败并显示一条通用浏览器消息(我没有看到它,但我认为没有必要,请继续阅读)。
我可以从任何 PC、台式机或笔记本电脑上的 Chrome、Firebug、IE 和 Edge 以及同事较新的 Mac 笔记本电脑访问所有 URL。我尝试使用通用的“hello world”htm 和 cfm 文件进行测试,以排除浏览器引擎对代码的解释:html/jquery/等。
为了排除 iPhone 6 的问题,我从完全不同的域上的另一台服务器创建了完全相同的一组测试文件,并且默认文档服务器成功启动。
当 URL 包含文件名时,我可以通过 HTTPS 从 iPhone 6 或 iPad 访问 URL(例如一直到:/index.htm
或:/folder/index.cfm
)。
只要请求通过不安全的通道进行,我就可以从 iPhone 6 或 iPad 通过 HTTP(不安全)访问所有 URL(例如上面的 URL 1 和 2,但使用 HTTP 而不是 HTTPS)。
在服务器端,我设置了一条广泛的失败请求跟踪规则(所有 HTTP 响应 100-999)。当我在失败的请求尝试期间查看目录时,我看到 XML 文件在几秒钟内从单个请求创建(这意味着 iPhone 浏览器正在反复尝试连接?)。XML 跟踪日志中的序列似乎表明一切正常(正确的处理程序映射似乎触发/激发,HTTP 200 OK 响应)一段时间,直到出现以下情况:
信息 166. -GENERAL_FLUSH_RESPONSE_END
尝试在不存在的网络连接上执行操作。
当我在 IIS 10 中尝试以下每种组合时,都没有任何区别:
将 StaticFile Handler Mapping 移至 ExtensionlessUrlHandler* Handler Mappings 上方。
将匿名身份验证设置为特定用户:IUSR 或应用程序池标识。
授予Web根文件夹的读取和执行权限。
将网站的应用程序池、托管管道设置设置为:经典或集成。
我的问题出在哪里?这似乎不是 IIS 10 设置或 iPhone 的问题。当上述测试用例成功时,SSL 证书似乎可以正常工作。