2011-05-15 51 views
1

我已經設置了2個Apache服務器,一個用於80端口,另一個用於443 HTTPS。相同的域名可通過http://www.domain.comhttps://www.domain.com訪問。 HTTPS似乎工作正常,如果我通過瀏覽器訪問網頁,頁面加載正常。奇怪的SSL Apache「掛起」與AJAX POST查詢掛起

我有腳本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調用中出現。

編輯:

我不知道它是什麼重要的,但這裏是從這個Apache2的-SSL服務器的error_log輸出,當一個AJAX有人呼籲:

[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) 
+0

你在PHP中使用會話? 然後,也許你需要用session_write_close()停止鎖定會話;畢竟會話變量是需要的...... – Miguel 2013-02-28 05:54:01

回答

1

使從http頁面POST請求到https頁面unfortunatel y會導致(某種)跨域錯誤。它會像你看到什麼都沒有結束一樣。解決方法是使用JSON將您的數據從http頁面提取到https頁面。閱讀this文章,您將可以修復它。祝你好運! 其他鏈接,您可能需要:

Jquery API - JSON

Cross domain requests(向下滾動用於JSON)

+0

好的,我有點懷疑這個,但希望問題在別的地方。 我想要解決的是移動PhoneGap webapp,它在本地運行,所以它永遠不會運行在SSL模式下。但是我需要通過HTTPS AJAX請求傳輸一些「祕密」數據。 你知道如何根據你的答案來處理這種情況嗎? – Frodik 2011-05-19 19:33:20

+0

恐怕我無法幫助你......我不是安全專家。您可以在將數據發回並解碼回safehouse之前自己編碼數據?但我不知道這是不是一個好主意..我希望我擅長安全問題... – rsplak 2011-05-19 19:39:29