我正在尝试从异步可插拔协议I中获取所有原始请求标头。但我只能使用IHttpNegotiate
获得一些基本标题。例如Accept-Language
,Referer
。使用名为HTTP Analyzer
的工具,可以更详细地查看这些内容。
function RetrieveRequestHeaders(const szUrl: PWideChar; const OIProtSink: IInternetProtocolSink): String;
var
pHttpNeg: IHttpNegotiate;
Headers: PWideChar;
HR: HResult;
begin
Result := '';
HR := IUnknown_QueryService(OIProtSink, IID_IHttpNegotiate, IID_IHttpNegotiate, pHttpNeg);
if Succeeded(HR) then
begin
Headers := nil;
HR := pHttpNeg.BeginningTransaction(szUrl, nil, 0, Headers);
if Succeeded(HR) then
begin
Result := Headers;
CoTaskMemFree(Headers);
end;
end;
end;
答案 0 :(得分:1)
IHTTPNegotiate.BeginningTransaction
会为您提供浏览器要添加到传出请求的(附加)标头。作为协议处理程序,您负责创建完整的传出HTTP请求标头,就像使用HTTP分析器工具一样。