我想用自己的User-Agent值创建自己的浏览器应用程序。
基于CHtmlView的浏览器。 MFC。
但Ajax请求中存在来自User-Agent的奇怪问题......
我做了:
User-Agent值用作Navigate()的参数。 Navigate()请求使用正确的User-Agent。
重载CHtmlView类的OnAmbientProperty()方法。
BOOL MyHtmlView::OnAmbientProperty(COleControlSite *pSite, DISPID dispid, VARIANT *pvar) { USES_CONVERSION; // Change user agent for this web browser host during hyperlinks if (dispid == DISPID_AMBIENT_USERAGENT) { pvar->vt = VT_BSTR; pvar->bstrVal = ::SysAllocString(m_userAgent); return TRUE; } return CHtmlView::OnAmbientProperty(pSite, dispid, pvar); }
这解决了超链接的问题。
但我必须将此浏览器用于某些Ajax应用程序。 这是问题所在。对于Ajax请求,它使用原始的IE User-Agent值。
我的电脑是基于IE7的WinXP。
知道如何解决这个问题吗? 如何从我的浏览器更改任何请求的User-Agent?
谢谢!
答案 0 :(得分:1)
在ajax请求中,您可以设置HTTP标头“User-Agent”:http://www.w3.org/TR/2007/WD-XMLHttpRequest-20070618/#dfn-setrequestheader
答案 1 :(得分:0)
我解决了UrlMkSetSessionOption()的问题,它只更改了当前会话的IE设置:
const char ua[] = "My user agent string"; HRESULT rez = UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, (LPVOID)ua, sizeof(ua), 0);
只有一个但是,它会改变设置一次。另一个调用返回没有错误,也没有更改。