winhttp 对cookie的处理

今天在用winhttprequest做网页post时出现奇怪的现象。

一、首先用winhttp登录163邮箱,域名http://webmail.mail.163.com

二、不带cookie进入积分系统,域名http://club.mail.163.com。结果积分系统居然自动登录了。显示登录163邮箱账户的详细积分。

我理解,是否在同一个一级域名下会自动处理cookie。然而第三步测试又奇怪了

三、进入bbs论坛,域名http://service.bbs.163.com,却又没有登录了。

不知道winhttp对cookie到底是如何处理的,msdn上也没查到有效答案!

转载于:https://www.cnblogs.com/hawkingXu/archive/2011/12/12/2284686.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用WinHttpAddRequestHeaders函数提交协议头和cookie的示例代码: ``` #include <Windows.h> #include <Winhttp.h> #include <iostream> #pragma comment (lib, "winhttp.lib") int main() { HINTERNET hSession = WinHttpOpen(L"WinHTTP Example/1.0", WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, 0); if (!hSession) { std::cout << "Error: Failed to open WinHTTP session." << std::endl; return 1; } HINTERNET hConnect = WinHttpConnect(hSession, L"www.example.com", INTERNET_DEFAULT_HTTPS_PORT, 0); if (!hConnect) { std::cout << "Error: Failed to connect to server." << std::endl; WinHttpCloseHandle(hSession); return 1; } HINTERNET hRequest = WinHttpOpenRequest(hConnect, L"GET", L"/", NULL, WINHTTP_NO_REFERER, WINHTTP_DEFAULT_ACCEPT_TYPES, WINHTTP_FLAG_SECURE); if (!hRequest) { std::cout << "Error: Failed to open HTTP request." << std::endl; WinHttpCloseHandle(hConnect); WinHttpCloseHandle(hSession); return 1; } LPCWSTR headers = L"Content-Type: application/json\r\nAuthorization: Bearer <access_token>\r\nCookie: sessionid=<session_id>; csrftoken=<csrf_token>\r\n"; if (!WinHttpAddRequestHeaders(hRequest, headers, (DWORD)-1L, WINHTTP_ADDREQ_FLAG_REPLACE)) { std::cout << "Error: Failed to add request headers." << std::endl; WinHttpCloseHandle(hRequest); WinHttpCloseHandle(hConnect); WinHttpCloseHandle(hSession); return 1; } if (!WinHttpSendRequest(hRequest, WINHTTP_NO_ADDITIONAL_HEADERS, 0, WINHTTP_NO_REQUEST_DATA, 0, 0, NULL)) { std::cout << "Error: Failed to send HTTP request." << std::endl; WinHttpCloseHandle(hRequest); WinHttpCloseHandle(hConnect); WinHttpCloseHandle(hSession); return 1; } if (!WinHttpReceiveResponse(hRequest, NULL)) { std::cout << "Error: Failed to receive HTTP response." << std::endl; WinHttpCloseHandle(hRequest); WinHttpCloseHandle(hConnect); WinHttpCloseHandle(hSession); return 1; } // Do something with the response... WinHttpCloseHandle(hRequest); WinHttpCloseHandle(hConnect); WinHttpCloseHandle(hSession); return 0; } ``` 在上面的示例中,我们使用了WinHttpAddRequestHeaders函数来添加了三个请求头:Content-Type、Authorization和Cookie。其中,Authorization字段用于传递访问令牌,Cookie字段用于传递会话ID和CSRF令牌。请注意,这些值都是虚构的,需要根据实际情况进行替换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值