我设法通过覆盖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;
}