Gần đây, Amazon đã tắt hỗ trợ SSL cho nhóm S3 và có vẻ như nó gây ra sự cố trên Win XP SP3. tôi sử dụng mã nàyWinHttp không tải xuống từ Amazon S3 trên WinXP
hSession = WinHttpOpen(L"MySession",
WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,
WINHTTP_NO_PROXY_NAME,
WINHTTP_NO_PROXY_BYPASS, 0);
if (bHTTPS)
{
DWORD flags = WINHTTP_FLAG_SECURE_PROTOCOL_TLS1;
WinHttpSetOption(hSession, WINHTTP_OPTION_SECURE_PROTOCOLS, &flags, sizeof(flags));
}
port = bHTTPS ? INTERNET_DEFAULT_HTTPS_PORT : INTERNET_DEFAULT_HTTP_PORT;
hConnect = WinHttpConnect(hSession, srv_w, port, 0);
hRequest = WinHttpOpenRequest(hConnect, vrb_w, adr_w, NULL, WINHTTP_NO_REFERER, NULL, WINHTTP_FLAG_REFRESH | (bHTTPS ? WINHTTP_FLAG_SECURE : 0));
if (bHTTPS)
{
DWORD dwSecFlag = SECURITY_FLAG_IGNORE_CERT_CN_INVALID |
SECURITY_FLAG_IGNORE_CERT_DATE_INVALID |
SECURITY_FLAG_IGNORE_UNKNOWN_CA |
SECURITY_FLAG_IGNORE_CERT_WRONG_USAGE;
WinHttpSetOption(hRequest, WINHTTP_OPTION_SECURITY_FLAGS, &dwSecFlag, sizeof(dwSecFlag));
}
WinHttpSendRequest(hRequest, hdr_w, (headers != NULL) ? -1 : 0, data, size, size, 0);
WinHttpReceiveResponse(hRequest, NULL);
này hoạt động trên Win7 và làm việc một tháng hoặc lâu hơn trước trên WinXP. Nhưng bây giờ tôi nhận được lỗi WinHttp 12152: Máy chủ trả về phản hồi không hợp lệ hoặc không được công nhận. Tôi đã bật dò tìm và đăng nhập fiel có một lỗi khác:
17:47:47.057 ::*0000001* :: WinHttpSendRequest(0x10a0000, "", 0, 0x0, 0, 0, 0)
17:47:47.135 ::*0000001* :: "s3.amazonaws.com" resolved
17:47:47.307 ::*0000001* :: Winsock/RPC/SSL/Transport error: 0x90312 [SEC_I_CONTINUE_NEEDED]
Có cách nào để khắc phục vấn đề này mà không sử dụng thư viện của bên thứ ba không? (trình duyệt, bao gồm IE, tải xuống tệp mà không gặp sự cố).
giá trị DWORD phải là 0, phải không? :) – Sergi0
Tôi đang chấp nhận giải pháp của bạn bây giờ, nó khắc phục được sự cố, nhưng tôi không chắc chắn rằng vô hiệu hóa các giao thức trên máy tính người dùng cuối là một ý tưởng hay :) có thể sau đó ai đó đề xuất một cách tốt hơn hoặc giải thích vấn đề cơ bản . – Sergi0
Có, 0! Xin lỗi về sự thiếu sót. Tôi đồng ý rằng đây không phải là giải pháp khả thi, tôi vẫn đang cố gắng tìm ra chính xác những gì khiến mật mã đó làm cho việc kết nối bắt tay thất bại. –