我编写了一个简单的 C++ 程序,它使用 IWebBrowser2 和我的 HTML 标头(Referer、UserAgent)在 IE 窗口中打开一个测试页面。一切正常。测试页面上的 PHP 函数显示修改后的标头。但是,Javascript(document.referrer、navigator.userAgent)没有。如何在 IWebBrowser2 IE 窗口中为 Javascript 设置引用者和用户代理?
这是我的程序:
#include <windows.h>
#include <Exdisp.h>
int main(){
if (SUCCEEDED(OleInitialize(NULL))){
IWebBrowser2* wb;
CoCreateInstance(CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER, IID_IWebBrowser2, (void**)&wb);
if(wb){
VARIANT vempty;
VariantInit(&vempty);
VARIANT vheaders = { 0 };
BSTR headers = SysAllocString( L"Referer: http://example.com\r\nUser-Agent: xyz\r\n" );
V_VT( &vheaders ) = VT_BSTR;
V_BSTR( &vheaders ) = headers;
BSTR url = SysAllocString(L"http://localhost/test2.php");
HRESULT hr = wb->Navigate(url, &vempty, &vempty, &vempty, &vheaders);
if(SUCCEEDED(hr)){
wb->put_Visible(VARIANT_TRUE);
}
else{
wb->Quit();
}
SysFreeString(url);
SysFreeString(headers);
wb->Release();
}
OleUninitialize();
}
system("PAUSE");
}