【问题标题】:Strange SSL Apache "pending" hang with AJAX POST queries奇怪的 SSL Apache“挂起”与 AJAX POST 查询挂起
【发布时间】:2011-05-15 10:36:43
【问题描述】:

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

我有脚本 www.domain.com/ajax.php 可以在 80 和 443 上正常工作,当通过浏览器(Chrome、FF、IE、..)访问时,但在我的页面中我使用 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)

【问题讨论】:

  • 你在 php 上使用 session 吗?那么也许你需要用 session_write_close(); 停止锁定会话;在需要所有会话变量之后...

标签: jquery ajax apache post https


【解决方案1】:

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

Jquery API - JSON

Cross domain requests(向下滚动查看 JSON)

【讨论】:

  • 好的,我有点怀疑这一点,但希望问题出在其他地方。我要解决的是在本地运行的手机 PhoneGap webapp,因此它永远不会在 SSL 模式下运行。但我需要通过 HTTPS AJAX 请求传输一些“秘密”数据。根据您的回答,您知道如何处理这种情况吗?
  • 恐怕我无法帮助您...我不是安全专家。您可以在将数据发送回之前自己对数据进行编码,然后在安全屋中将其解码?但我不知道这是否是个好主意。我希望我擅长安全问题...
【解决方案2】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    • 2017-04-09
    • 2020-01-27
    • 2011-07-14
    相关资源
    最近更新 更多