奇怪的SSL Apache "pending"挂在AJAX POST查询中



我已经设置了 2 个 apache 服务器,一个用于 80 端口,第二个用于 443 HTTPS。同一域可通过 http://www.domain.com 和 https://www.domain.com 访问。HTTPS似乎工作正常,如果我使用浏览器访问网络,页面加载正常。

我有脚本 www.domain.com/ajax.php,当通过浏览器(Chrome,FF,IE,..)访问时,它在80和443上都可以正常工作,但是在我的页面中,我将Jquery用于POST ajax查询。当我执行以下操作时,没有任何反应,在Chrome的开发人员工具中,我只看到请求处于"挂起"状态,并且没有任何来自服务器的输出。

$.post('https://www.domain.com/ajax.php?action=test', {}, function() {});

是否存在问题,即页面发出请求是在HTTP连接上,而ajax请求使用HTTPS?还是这种奇怪的行为还有其他原因?同样奇怪的是,常规页面加载良好,例如 https://www.domain.com/- 没问题。挂起的请求问题仅在 AJAX 调用中出现。

编辑:

我不知道这是否重要,但这是进行一次 AJAX 调用时此 Apache2-SSL 服务器error_log的输出:

[Thu May 19 21:05:30 2011] [info] [client 84.16.x.x] Connection to child 0 established (server www.domain.com:443)
[Thu May 19 21:05:30 2011] [info] Seeding PRNG with 144 bytes of entropy
[Thu May 19 21:05:30 2011] [info] [client 84.16.x.x] (70014)End of file found: SSL handshake interrupted by system [Hint: Stop button pressed in browser?!]
[Thu May 19 21:05:30 2011] [info] [client 84.16.x.x] Connection closed to child 0 with abortive shutdown (server www.domain.com:443)
不幸的是,从

http页面向https页面发出发布请求将导致(某种)跨域错误。正如你所看到的,它将一无所有。解决方法是使用 JSON 将数据从http页面提取到https页面。阅读本文,您将能够修复它。祝你好运!您可能需要的其他链接:

Jquery API - JSON

跨域请求(向下滚动查看 JSON)

同源策略:

http://en.wikipedia.org/wiki/Same_origin_policy

最新更新