从ActiveX得到IE的Cookie

经过几番搜索,得出结论:
1)服务器是.Net2.0会给cookie加上HttpOnly属性,会使客户端无法通过IE接口读取到cookie.只能读到普通的cookie
2)VS.NET2005与VC6是有区别的,m_pClientSite不同,而且要注意BSTR得到cookie

对于VS.NET2005:
void CActiveXCtrl::OnClick(USHORT iButton)
{
 HRESULT   hr   =   S_OK;  
 IServiceProvider *isp = NULL;
 IServiceProvider *isp2 = NULL;  

 if   (!m_pClientSite)  
 {  
  return;  
 }      
 else  
 {  
  hr   =   m_pClientSite->QueryInterface(IID_IServiceProvider,   reinterpret_cast<void   **>(&isp));  
  if   (FAILED(hr))    
  {  
   hr   =   S_OK;  
   ASSERT(FALSE);  
   return;  
  }  
  hr   =   isp->QueryService(SID_STopLevelBrowser,   IID_IServiceProvider,   reinterpret_cast<void   **>(&isp2));  
  if   (FAILED(hr))  
  {  
   hr   =   S_OK;  
   ASSERT(FALSE);  
   return;  

  }

  IWebBrowser2 *browser = NULL;
  hr   =   isp2->QueryService(SID_SWebBrowserApp,   IID_IWebBrowser2,   reinterpret_cast<void   **>(&browser));  
  if   (FAILED(hr))    
  {  
   hr   =   S_OK;  
   ASSERT(FALSE);  
   return;  

  }  
  IDispatch   *pDispatch;  
  if(FAILED(browser->get_Document(&pDispatch))){  
   hr   =   S_OK;  
   ASSERT(FALSE);  
   return;  

  }  
  IHTMLDocument2   *pDocument;  
  if(FAILED(pDispatch->QueryInterface(IID_IHTMLDocument2,   reinterpret_cast<void   **>(&pDocument)))){  
   hr   =   S_OK;  
   ASSERT(FALSE);  
   return;  
  }

  BSTR str1;


  BSTR   str;
  if(S_OK==pDocument->get_cookie(&str)){  
   CString   text(str);
   TRACE(text);
   MessageBox(text);
   //url=text;  
  }

  if(S_OK==pDocument->put_title(str)){  
  }  
  
  if(S_OK==pDocument->get_referrer(&str)){  
   CString   text(str);
   TRACE(text);  
   //url=text;  
  }  
  return;  
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值