如何获取所有原始请求标头?

时间:2014-04-17 10:43:52

标签: delphi com webbrowser-control bho twebbrowser

我正在尝试从异步可插拔协议I中获取所有原始请求标头。但我只能使用IHttpNegotiate获得一些基本标题。例如Accept-LanguageReferer。使用名为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;

1 个答案:

答案 0 :(得分:1)

IHTTPNegotiate.BeginningTransaction会为您提供浏览器要添加到传出请求的(附加)标头。作为协议处理程序,您负责创建完整的传出HTTP请求标头,就像使用HTTP分析器工具一样。