一个奇怪的https请求问题,和用户有关

sokol sokol 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
这两天突然发现之前写的一个https post函数突然不能工作了,代码如下:

BOOL CHttpClient::doPost(CString href, CStringA& response, LPCTSTR referer)
{
BOOL ret = FALSE;
response = "";

CString strServerName;
CString strObject;
INTERNET_PORT nPort;
DWORD dwServiceType;
AfxParseURL((LPCTSTR)href, dwServiceType, strServerName, strObject, nPort);

DWORD dwFlags = INTERNET_FLAG_NO_AUTO_REDIRECT;
if(dwServiceType == AFX_INET_SERVICE_HTTPS)
{
dwFlags |= INTERNET_FLAG_SECURE;
}

CInternetSession sess(_T("Microsoft Internet Browser"));
CHttpConnection* conn = NULL;
CHttpFile* pFile = NULL;

DWORD retcode;

int ilen = WideCharToMultiByte(CP_UTF8, 0, strParam, -1, NULL, 0, NULL, NULL);
char *utf8temp = new char[ilen+1];
memset(utf8temp, 0, ilen +1);
WideCharToMultiByte (CP_UTF8, 0, (LPCTSTR)strParam, -1, utf8temp, ilen, NULL, NULL);

try
{
conn = sess.GetHttpConnection(strServerName, nPort);

pFile = conn->OpenRequest(CHttpConnection::HTTP_VERB_POST, strObject, referer, 1, NULL, _T("HTTP/1.1"), dwFlags);

pFile->AddRequestHeaders(_T("Content-Type: application/x-www-form-urlencoded"));
pFile->AddRequestHeaders(_T("Accept: */*"));
pFile->SendRequest(NULL, 0, utf8temp, ilen);
pFile->QueryInfoStatusCode(retcode);

char buffer[8192];
UINT len = 0;
while((len=pFile->Read(buffer, 8192)) > 0)
{
response.Append(buffer, len);
}

ret = TRUE;
}
catch(CFileException* e)
{
e->Delete();
}
catch (CInternetException* e)
{
e->Delete();
};

if(pFile)
{
pFile->Close();
delete pFile;
}

delete[] utf8temp;

conn->Close();
delete conn;
sess.Close();

return ret;
}

这个在之前一直工作的好好的,经过反复测试发现这个函数在普通用户身份下工作正常,在SYSTEM身份下不能工作,抛出异常CInternetException 错误码为12029即ERROR_INTERNET_CANNOT_CONNECT,换了别的机器绝大多数能正常工作。

测试结果总结一下:
1. 只有https请求才会出错
2. 只有SYSTEM账户下(后台服务)时才会出错,如果把服务的运行用户改成普通用户就正常了
3. 只有少量机器会出错

所以这个问题已经可以确定测试的这台机器SYSTEM用户有某种问题,但这个用户环境一般是无法被用户破坏的,那么究竟这个SYSTEM用户环境发生了什么变化呢?又有什么办法能够让SYSTEM环境重置呢。或者有什么办法能获得更多的出错信息呢?
...全文

相关推荐

nobsjs.github.io

nobsjs.github.io

Ruin-鸣

解决IOS9以后强制HTTPS的问题。

在iphone升级到iOS 9以后,出现一些奇怪的错误,原有的http请求都失败。查了资料后才知道ios 9会强制所有的app中原有的http请求变为https请求。如果原有的服务器不支持https的话,就会出现各种错误。 该工具的使用: 将ios9fix.exe拷贝到工程文件目录下,在工程设置中的post-build events的commands栏中加入 call "$(PROJECTDIR)\ios9fix.exe" "$(OUTPUTPATH).info.plist"

A00553344

WEB上调用HttpWebRequest奇怪问题的解决方法

WEB上调用HttpWebRequest奇怪问题的解决方法

weixin_38658568

dumbsel:一个愚蠢而奇怪的建筑

哑铃 Dumbsel 是一种用于学习目的的愚蠢而奇怪的架构。 播放 git clone https://github.com/rick2600/dumbsel.git cd dumbsel make ./dumbsel examples/<file>.bin 文档 寄存器 寄存器为 16 位 r0(特殊寄存器,可能在某些指令中隐式使用,返回值) r1-r5(参数) r6-13(通用) bs(基础堆栈) ts(顶部堆栈) pc(程序控制,用户不可访问) 标志(执行状态,参见:ldflg/stflg) 缓存 有一个指令缓存,最多缓存 16 条最近执行的指令 指示 数据移动 (01) mov ra,rb/imm : - 要注册的 mov 数据 (02) ext ra,rb/imm : 将最低有效字节从 rb/imm 扩展到 ra (无符号) (03) exts ra,rb/imm

weixin_42128015

hexchat-slack:用于修复 Slack 在 IRC 上的奇怪语音设备行为的 Hexchat 插件

hexchat-slack 用于修复 IRC 上 Slack 奇怪的语音/设备行为的 Hexchat 插件 安装 (cd ~ /.config/hexchat/addons ; wget https://github.com/tyrion/hexchat-slack/raw/master/hexchat_slack.py)

80 seconds
评论 5
收藏 已收藏
分享
返回顶部
sokol
网络编程 18,356 成员 64,161 内容