我有一个Rails 3.2应用程序,我正在尝试调试一个奇怪的ssl问题。
我在整个应用程序中进行页面缓存并维护动态内容我正在制作更新某些方面的ajax请求。
所有缓存的页面都应该仅由http请求。当发出ssl请求时,除了两个中的所有一个都重定向到http。
问题是,这两个页面Artists和Blog无法重定向回http,并且刷新内容的ajax请求被取消。据我所知,它被取消了,因为它将普通的http看作一个不同的站点,你不能在ssl下向另一个站点发出ajax请求。
设置本地签名证书没有帮助。在开发过程中,这两页的表现恰当。我也在使用AWS ELB,其中ssl终止于负载均衡器并转到端口80,这似乎也正常工作。
我可以强制这两个页面每次都重定向到http,但我更倾向于深究这一点。
我正在使用ssl_requirement来执行应用级重定向。
我正在寻找有关如何发生这种情况的想法。我已经梳理了我的代码库,但是在应用程序级别找不到任何能够实现这一目标的东西。我不认为我的apache vhost是完美的,但这两页没有任何关系。任何人都知道这可能发生在堆栈中的哪个位置?
编辑:
最后意识到,由于页面是完全缓存的,因此请求只能访问apache,而不是应用程序将被重定向。这让我怀疑为什么Ajax请求被取消了。 Ajax请求属于同一域但未加密。难道不应该只是出现“不安全内容”的警告吗?我正在使用jquery getScript来加载动态内容。
答案 0 :(得分:0)
嗯,这将是愚蠢错误的历史,但我认为我会留下来帮助其他人搜索。
简单的答案是我的ajax调用不允许通过ssl连接。如果您的ssl_requirement具有ssl_allowed方法,请确保在ssl上允许您调用加载动态内容的ajax方法。否则,请求将被取消,否则将获得302重定向。