Измените requestHeaders в «кастомном» браузере в delphi - PullRequest
4 голосов
/ 09 февраля 2012

В мое приложение deplhi (IE) встроен браузер.Мне нужно вызвать определенное веб-приложение, и мне нужно добавить новую переменную в заголовок для всех запросов, поступающих из браузера моего приложения, как jquery добавляет к xhrobj параметр HTTP_X_REQUESTED_WITH.Есть идеи, как мне это сделать?примеры кода было бы здорово.Я использую TWebBrowser.

Ответы [ 2 ]

7 голосов
/ 09 февраля 2012

Вы можете изменить заголовки с событием 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;
1 голос
/ 09 февраля 2012

IWebBrowser2.Navigate имеет параметр, который позволяет определять дополнительные заголовки.

...