我使用C一點HTTPS客戶端和我與SSL_write功能的問題。 三個測試來說明我的問題:OpenSSL的 - SSL_write問題
#define HEADERS1 "GET/HTTP/1.1\r\n"
#define HEADERS2 "Host: www.example.com\r\n"
#define HEADERS3 "User-Agent: OpenSSL\r\n"
#define HEADERS4 "\r\n"
#define HEADERS "GET/HTTP/1.1\r\nHost: www.example.com\r\nUser-Agent: OpenSSL\r\n\r\n"
測試1:
SSL_write(ssl,HEADERS,strlen(HEADERS));
成功:服務器正確地與HTTP/1.1 200碼返回/index.html的ressource。
測試2:
SSL_write(ssl,HEADERS1,strlen(HEADERS1));
SSL_write(ssl,HEADERS2,strlen(HEADERS2));
SSL_write(ssl,HEADERS3,strlen(HEADERS3));
SSL_write(ssl,HEADERS4,strlen(HEADERS4));
失敗:服務器不返回任何東西。所有SSL_write函數不返回錯誤,但我的應用程序在SSL_read鎖定,因爲在目標服務器給沒有內容......沒有標題:(
測試3:
SSL_write(ssl,HEADERS1,strlen(HEADERS1));
SSL_write(ssl,HEADERS2,strlen(HEADERS2));
SSL_write(ssl,HEADERS4,strlen(HEADERS4));
成功:服務器正確使用HTTP/1.1 200碼返回/index.html的ressource。
是否有我可以叫SSL_write發送頭?很奇怪的次數特別的限制......
非常感謝你 !
好了,我的問題persits,但我有更多的細節:
IISS-SSL =>所有測試成功。
Apache的SSL =>所有測試成功。
Nginx的-SSL =>所有測試成功。
LightHTTPD-SSL =>試驗2故障。
我不明白爲什麼只有LightHTTPD不明白我的請求......
也許有助於調試運行服務器並查看日誌。您也可以嘗試捕獲流量(如果與服務器密鑰一起提供,wireshark可以解密它)。 –
你也應該檢查'SSL_write'可能返回的錯誤。 –
謝謝你。問題解決了。問題來自LightHTTPD(http://redmine.lighttpd.net/issues/2197),這在舊版本中存在一個錯誤... – Ruby14000