gpt4 book ai didi

ssl - 服务器在 HTTPS 连接上返回 HTTP 404 错误。 200 在 HTTP 连接上

转载 作者:可可西里 更新时间:2023-11-01 11:51:04 26 4
gpt4 key购买 nike

我有一个客户端应用程序使用 WinHttp 库与实现 IPP(互联网打印协议(protocol))的安全服务器通信。

HINTERNET m_hRequest = WinHttpOpenRequest(m_hConnect, L"POST",L"/ipp",
L"HTTP/1.1", WINHTTP_NO_REFERER,
WINHTTP_DEFAULT_ACCEPT_TYPES,
m_secure); //WINHTTP_SECURE
if (!m_hRequest){
printf("WinHttpOpenRequest: Error %d has occurred.",GetLastError());
return 0;
}

//没有提供客户端证书,因为服务器不需要。

bResults = WinHttpSetOption( m_hRequest, WINHTTP_OPTION_CLIENT_CERT_CONTEXT, WINHTTP_NO_CLIENT_CERT_CONTEXT, 0); 
if (!bResults){
printf("WinHttpSetOption: Error %d has occurred.",GetLastError());
return 0;
}

//忽略未知 CA 和 CN 不匹配 URL 等安全错误

DWORD secIgnore = SECURITY_FLAG_IGNORE_CERT_CN_INVALID | SECURITY_FLAG_IGNORE_UNKNOWN_CA | SECURITY_FLAG_IGNORE_CERT_DATE_INVALID | SECURITY_FLAG_IGNORE_CERT_WRONG_USAGE;
bResults = WinHttpSetOption(m_hRequest,WINHTTP_OPTION_SECURITY_FLAGS,&secIgnore,sizeof(DWORD));
if (!bResults){
printf("WinHttpSetOption: Error %d has occurred.",GetLastError());
return 0;
}
bResults = WinHttpSendRequest(m_hRequest, WINHTTP_NO_ADDITIONAL_HEADERS, 0, WINHTTP_NO_REQUEST_DATA, 0, 0, 0);
if (!bResults){
printf("WinHttpSendRequest: Error %d has occurred.",GetLastError());
return 0;
}

bResults = WinHttpReceiveResponse(m_hRequest, NULL);

现在我应该在内容中获得 200 OK 和 IPP 响应。我得到的是 404 未找到资源。

其他观察:.同一段代码可以连接到端口 631(默认). OpenSSL 发出相同的 POST 命令。它得到了正确的回应.使用原始套接字和 Windows SChannel 实现的类似软件似乎工作正常. SSL 握手似乎很好地结束了加密的应用程序数据双向流动(在 Wireshark 中验证)

我很困惑为什么它会失败。

是不是 WinHttp 的问题? 服务器 SSL 版本不正确? 我仍然强烈怀疑 SSL 层出了问题

有人可以帮忙吗?如果需要,我可以提供 Wireshark 日志。

谢谢,希亚姆。

最佳答案

这似乎是服务器配置的问题。一个例子:如果你使用 apache 2 服务器,你可以配置 de default-site 和 default-ssl-site 中内容的位置不同。完成此操作后,您将拥有 Web 服务器搜索内容并返回 404 的其他位置,因为它不存在

关于ssl - 服务器在 HTTPS 连接上返回 HTTP 404 错误。 200 在 HTTP 连接上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29523645/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com