最近,我一直在进行一系列测试,以了解HTTPS在不同情况下如何处理普通请求和Ajax请求。这是测试结果(我一直在使用jQuery来执行ajax调用):
- 当从具有Https的页面转到正常的Http时,是否会向用户显示弹出窗口?结果:ipod touch(从现在开始的IPT)不会发出任何警告。不是Chrome。 Safari和Firefox将会出现一个窗口,说明您正在远离安全区域。我的Android设备显示的行为类似于IPT和Chrome。
- 使用ajax进行请求时,使用带有HTTPS的页面使用HTTPS的URL:正如预期的那样一切正常并且没有弹出窗口(它们不应该出现,因为我们仍在使用加密通道)。 / LI>
- 当使用ajax从带有HTTP的页面使用HTTP的URL执行请求时(因此我们从安全页面执行不安全的请求):此处所有请求都失败,这可以在javascript中看到请求完成,但它给出一个空的回应。不以任何方式提示用户。在每个设备和每个桌面浏览器上都获得相同的结果。因此,不可能对同一域上的不安全页面执行不安全的Ajax请求。
- 让我们尝试使用Ajax从HTTPS页面向另一个域请求执行HTTP。这可能是一种风险,因为请求可能会使用非加密通道发送您通过HTTPS收到的合理数据。令人惊讶的是,这适用于每个平台,没有错误或抱怨。这与最后的结果形成对比,因为我可以对其他域做出不安全的请求,但不能对同一个域做出不安全的请求!这是一种奇怪的行为......
如果它让你从加密页面做一个非加密的请求,它会让你做一个加密的请求,常识说...实际上我们是对的,它确实在每个平台上。
- 让我们尝试使用Ajax从HTTPS页面向另一个域请求执行HTTP。这可能是一种风险,因为请求可能会使用非加密通道发送您通过HTTPS收到的合理数据。令人惊讶的是,这适用于每个平台,没有错误或抱怨。这与最后的结果形成对比,因为我可以对其他域做出不安全的请求,但不能对同一个域做出不安全的请求!这是一种奇怪的行为......
- 如果它让你从加密页面做一个非加密的请求,它会让你做一个加密的请求,常识说...实际上我们是对的,它确实在每个平台上。
我很惊讶它不允许你从HTTPS页面到同一个域进行HTTP Ajax调用(在这种情况下它是同一个页面),它允许你对其他域进行调用。你对这个问题有更多了解吗?