[请教]Navigate2参数中header的传递方法

hateme1 2007-06-23 10:30:21
这个问题已经困惑了我好久,我看社区里也有人问相同的问题但没人来解答。
大家先看段代码,很简单的:

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd)
{
OleInitialize(NULL);
//BROWSER_INFO *pBrowserInfo = (BROWSER_INFO *)pParams;
IWebBrowser2* m_pInetExplorer;

HRESULT hr;
CLSID clsid;
LPUNKNOWN punk=NULL;
CLSIDFromProgID (OLESTR("InternetExplorer.Application"), &clsid);
hr = CoCreateInstance (clsid, NULL, CLSCTX_SERVER, IID_IUnknown, (LPVOID *) &punk);
if (SUCCEEDED(hr))
{
punk->QueryInterface (IID_IWebBrowser2, (LPVOID *) &m_pInetExplorer);
punk->Release();
VARIANT vars[4];
memset(vars,0,sizeof(vars));
BSTR BStrURL = _com_util::ConvertStringToBSTR((const char *)("http://www.b.com/2.html"));
char *strHeader="\r\nReferer: http://www.a.com/1.html\r\n\r\n";
m_pInetExplorer->put_Visible(VARIANT_TRUE);
HRESULT hrie = m_pInetExplorer->Navigate2(&CComVariant(BStrURL),vars,vars+1,vars+2,&CComVariant(strHeader));

代码就实现用Navigate2来打开www.b.com/2.html,同时修改了header中的referrer,在2.html里我写了一个JS:<script>document.write(document.referrer);</script>。照理说我应该在2.html里看到他的前导页面是www.a.com/1.html,但实际上并不是这样。我进行了嗅探,发现Navigate2发出的header中的确已经有referrer:http://www.a.com/1.html,可为什么2.html中的脚本就是获取不到这个referrer的值呢?
哪位也做过相关的测试,能告知是什么原因不?究竟要怎么要才能实现伪造referrer呢?
这是我的联系QQ:3_3_3_98_4_6_6
...全文
490 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2008-07-28
  • 打赏
  • 举报
回复
很简单,REFERRER并不是只通过HTTP HEAD来获取的,JS里REFFER这个属性是只读的,浏览器会传递REFFER给他,


3,248

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧