如何使用passthru应用程序

时间:2016-03-03 17:13:04

标签: c++ internet-explorer visual-c++

我设法通过覆盖IWinInetHttpInfo :: QueryInfo来修改现有的响应头。但是,我无法找到添加当前响应中不存在的响应头的方法。有谁知道这是怎么做到的吗?

这是一个如何修改现有CORS头的示例(问题是如果CORS头不存在,如何添加它):

   inline STDMETHODIMP IInternetProtocolImpl::QueryInfo(
   /* [in] */ DWORD dwOption,
   /* [in, out] */ LPVOID pBuffer,
   /* [in, out] */ DWORD *pcbBuf,
   /* [in, out] */ DWORD *pdwFlags,
   /* [in, out] */ DWORD *pdwReserved)
   {
          ATLASSERT(m_spWinInetHttpInfo  != 0);

          char* buf = new char[*pcbBuf];
          memcpy(buf,pBuffer,*pcbBuf);
          char* res = strstr(buf, "Access-Control-Allow-Origin"); 
          delete[] buf;
          buf = NULL;

          HRESULT hr =  m_spWinInetHttpInfo ? m_spWinInetHttpInfo->QueryInfo(dwOption, pBuffer, pcbBuf, pdwFlags, pdwReserved) : E_UNEXPECTED;

          if(res != NULL) // its CORS!!!
          {
                 *((char*)pBuffer) = '*';
                 *((char*)pBuffer + 1) = '\0';
                 *pcbBuf = 1;
          }
          return hr;
   }

0 个答案:

没有答案