基于MFC,发送 HTTP put 请求,想要上传文件,报错返回403

基于MFC C++框架。我想通过发送 HTTP Put 请求上传文件。结果报错返回 403.
首先我可以确保请求地址和 Header 无误,文件有效。用 Postman 测试过,返回 Success。

代码如下:

BOOL bResult = FALSE;
DWORD dwType = 0;
CString strServer;
CString strObject;
INTERNET_PORT wPort = 0;
DWORD dwFileLength = 0;
BYTE * pFileBuff = NULL;
CHttpConnection * pHC = NULL;
CHttpFile * pHF = NULL;
CInternetSession cis;

bResult = AfxParseURL(strUrl, dwType, strServer, strObject, wPort);
if (!bResult)
    return FALSE;
CFile file;
try
{
    // Read the file
    if (!file.Open(filenameFullpath, CFile::shareDenyNone | CFile::modeRead))
        return FALSE;
    dwFileLength = file.GetLength();
    if (dwFileLength <= 0)
        return FALSE;
    pFileBuff = new BYTE[dwFileLength];
    memset(pFileBuff, 0, sizeof(BYTE) * dwFileLength);
    file.Read(pFileBuff, dwFileLength);

    // Set up internet connection
    const int nTimeOut = 5000;
    cis.SetOption(INTERNET_OPTION_CONNECT_TIMEOUT, nTimeOut);
    cis.SetOption(INTERNET_OPTION_CONNECT_RETRIES, 2);  // Retry once if failed
    pHC = cis.GetHttpConnection(strServer, dwType == AFX_INET_SERVICE_HTTP ? NORMAL_CONNECT : SECURE_CONNECT, wPort);  // Get a HTTP connection

    pHF = pHC->OpenRequest(CHttpConnection::HTTP_VERB_PUT, strObject);//strObject
    
    pHF->AddRequestHeaders(header);
    // 这里必须单独调用AddRequestHeaders给header。尝试过在下面的函数里直接把header放在第一个参数里,返回错误说标头无效
    if (!pHF->SendRequest(NULL, 0, pFileBuff, dwFileLength))
    {
        delete[]pFileBuff;
        pFileBuff = NULL;
        pHF->Close();
        pHC->Close();
        cis.Close();
        return FALSE;
    }

    DWORD dwStateCode = 0;
    pHF->QueryInfoStatusCode(dwStateCode);

    if (dwStateCode == HTTP_STATUS_OK) // <==== Here is the error, which always returns 403
        bResult = TRUE;
}