6

我的 deplhi 应用程序 (IE) 中集成了一个浏览器。我需要调用某个 Web 应用程序,并且我需要在来自我的应用程序浏览器的所有请求的标头中附加一个新变量,例如 jquery 添加到 xhrobjHTTP_X_REQUESTED_WITH参数。关于我该怎么做的任何想法?代码示例会很棒。我正在使用TWebBrowser

4

2 回答 2

8

您可以使用事件修改标题OnBeforeNavigate2

procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
var
  NewHeaders: OleVariant;
begin
  // do not allow frames or iframes to raise this event
  if (pDisp as IUnknown) = (WebBrowser1.ControlInterface as IUnknown) then
  begin
    // avoid stack overflow: check if our custom header is already set
    if Pos('MyHeader', Headers) <> 0 then Exit;

    // cancel the current navigation
    Cancel := True;
    (pDisp as IWebBrowser2).Stop;

    // modify headers with our custom header
    NewHeaders := Headers + 'MyHeader: Value'#13#10;

    (pDisp as IWebBrowser2).Navigate2(URL, Flags, TargetFrameName, PostData, NewHeaders);
  end;
end;
于 2012-02-09T13:29:06.990 回答
1

IWebBrowser2.Navigate有一个参数,可让您定义其他标题。

于 2012-02-09T13:07:09.260 回答