我有以下问题:
可插入协议处理程序提供 HTML 文件。
这些文件没有正确的doctype
- 文档类型完全丢失。我无法更改,文件来自第三方。
所以我想使用“ X-UA-Compatible: IE=edge
”标题来设置文档类型。当我从真正的网络服务器执行此操作时,它按预期工作。当我通过协议处理程序执行此操作时,IHttpNegotiate::OnResponse
它不起作用。
我已经尝试添加更多的标题,例如“ Content-Type
”,当然还有“ HTTP/1.1 200 OK
”,直到我报告从真正的网络浏览器收到的所有标题 - IE 仍然将其设置documentMode
为 5。
有人对此有一些想法吗?
这是我正在尝试的:
pOIProtSink->ReportProgress(BINDSTATUS_FINDINGRESOURCE, L"Found");
pOIProtSink->ReportProgress(BINDSTATUS_CONNECTING, L"Connecting");
pOIProtSink->ReportProgress(BINDSTATUS_SENDINGREQUEST, L"Sending");
CComQIPtr<IServiceProvider> provider(pOIProtSink);
if (provider) {
CComPtr<IHttpNegotiate> negotiate;
provider->QueryService(IID_IHttpNegotiate, IID_IHttpNegotiate,
(void**)&negotiate.p);
if (negotiate) {
CStringW hdrs;
hdrs.Format(
L"HTTP/1.1 200 OK\r\nContent-Type: %s\r\nX-UA-Compatible: IE=edge\r\n\r\n",
sMime);
negotiate->OnResponse(200, hdrs, L"", NULL);
}
}
pOIProtSink->ReportProgress(BINDSTATUS_VERIFIEDMIMETYPEAVAILABLE, sMime);
pOIProtSink->ReportData(BSCF_FIRSTDATANOTIFICATION, 0, sz);
pOIProtSink->ReportData(BSCF_LASTDATANOTIFICATION
| BSCF_DATAFULLYAVAILABLE, sz, sz);
pOIProtSink->ReportResult(S_OK, 0, NULL);
整个代码可以在github上找到。
干杯
想象