如何获得请求cookie与winhttp
How to get request cookies with winhttp?
响应Cookie ('Set-Cookie'响应标头)获得良好,但请求Cookie ('Cookie'请求标头)我无法通过WinHttpQueryHeaders
获得,即使使用WINHTTP_QUERY_FLAG_REQUEST_HEADERS
:
DWORD size = 0;
BOOL re = WinHttpQueryHeaders(hRequest, WINHTTP_QUERY_COOKIE /*| WINHTTP_QUERY_FLAG_REQUEST_HEADERS*/, nullptr, nullptr, &size, nullptr);
DWORD err = GetLastError(); // re = 0 && err == ERROR_WINHTTP_HEADER_NOT_FOUND
怎么了?
应该可以:
DWORD lastError;
LPVOID lpBuffer;
DWORD dwSize = 0, dwIndex = 0;
// Call with zero size to get actual size
BOOL res = WinHttpQueryHeaders(hRequest,
WINHTTP_QUERY_COOKIE,
WINHTTP_HEADER_NAME_BY_INDEX,
NULL,
&dwSize,
&dwIndex);
lastError = GetLastError();
if (lastError == ERROR_INSUFFICIENT_BUFFER)
{
lpBuffer = new WCHAR[dwSize/sizeof(WCHAR)];
WinHttpQueryHeaders(hRequest,
WINHTTP_QUERY_COOKIE,
WINHTTP_HEADER_NAME_BY_INDEX,
lpBuffer,
&dwSize,
&dwIndex);
// convert result to wstring
std::wstring result(reinterpret_cast<wchar_t*>(lpBuffer),
dwSize/sizeof(wchar_t));
std::wcout << L"Result: " << result << endl;
delete[] lpBuffer;
}
我能够通过使用(WINHTTP_QUERY_FLAG_REQUEST_HEADERS|WINHTTP_QUERY_RAW_HEADERS_CRLF)组合来检索请求标头(包括cookie),而不是仅仅使用WINHTTP_QUERY_RAW_HEADERS_CRLF作为响应标头。
相关文章:
- 获取加密的正文响应WinHttp HTTPS
- Visual Studio 发布模式阻止在调试模式下执行的代码.使用 WinHTTP 和多线程
- 是否需要关闭来自 WinHTTP 异步的句柄?
- WinHTTP 自动代理不起作用
- libcurl cookie在Android上有效
- 如何在 c++ 中使用 winhttp 将 json 数据发布到 api
- Dtls 客户端不会使用 cookie 发送 ClientHello(英语:ClientHello)
- 如何在CEF + MFC中获取cookie
- Windows 10 下的 Winhttp SSL 问题
- Get cookie from CDHtmlDialog
- winhttp WINHTTP_CALLBACK_STATUS_FLAG_SECURITY_CHANNEL_ERROR
- 如何使用CGICC和C++设置cookie
- 如何在低文件夹中获取IE cookie
- 如何使用QT保存cookie
- QT 5.6 QWebEngine 不保存 cookie
- QWebFrame load() 在初始页面加载时不发送 cookie
- WinHttp打开泄漏内存
- WinHTTP and Websocket
- 0x00363A09处出现未处理的异常,堆栈cookie检测代码检测到基于堆栈的缓冲区溢出
- 如何获得请求cookie与winhttp