0

我有一个 Rails 3.2 应用程序,我正在尝试调试一个奇怪的 ssl 问题。

我在整个应用程序中进行页面缓存并维护动态内容,我正在发出 ajax 请求以更新某些方面。

所有缓存的页面都应该仅由 http 请求。当发出 ssl 请求时,除了其中两个之外,所有这些都重定向到 http。

问题是,这两个页面艺术家博客未能重定向回 http,并且刷新内容的 ajax 请求被取消。据我所知,它被取消了,因为它将普通的 http 视为不同的站点,并且您无法在 ssl 下向不同的站点发出 ajax 请求。

设置本地签名证书没有帮助。在开发中,这两个页面的行为是适当的。我还在使用 AWS ELB,其中 ssl 在负载均衡器处终止并转到端口 80,这似乎也可以正常工作。

我可以强制这两个页面每次都重定向到 http,但我更愿意深入了解这一点。

我正在使用 ssl_requirement 进行应用级重定向。

我正在寻找有关如何发生这种情况的想法。我已经梳理了我的代码库,但在应用程序级别找不到任何会导致这种情况发生的东西。我不认为我的 apache vhost 是完美的,但与这两个页面无关。任何人都知道这可能发生在堆栈中的哪个位置?

编辑:

终于意识到,由于页面已完全缓存,因此请求仅针对 apache,而不会针对将被重定向的应用程序。这让我质疑为什么 Ajax 请求会被取消。Ajax 请求发往同一个域但未加密。这不应该只是显示为“不安全内容”的警告吗?我正在使用 jquery getScript 来加载动态内容。

4

1 回答 1

0

好吧,这将载入愚蠢错误的历史,但我想我会把它留给其他人使用谷歌搜索。

简单的答案是我的 ajax 调用不允许通过 ssl 连接。如果您的 ssl_requirement 具有 ssl_allowed 方法,请确保您调用加载动态内容的 ajax 方法在 ssl 上是允许的。否则请求将被取消或将获得 302 重定向。

于 2012-06-28T18:46:23.063 回答