Page 1 of 3

Unable to set referer

Posted: Thu Aug 20, 2020 9:36 pm
by andreykrasnodar

Code: Select all

procedure TForm1.Chromium2BeforeResourceLoad(Sender: TObject;
  const browser: ICefBrowser; const frame: ICefFrame;
  const request: ICefRequest; const callback: ICefRequestCallback;
  out Result: TCefReturnValue);
var
  map: ICefStringMultimap;
begin
  map := TCefStringMultimapOwn.Create;
  request.GetHeaderMap(map);
  map.Append('referer', 'https://google.com');
  map.Append('Accept-Language', 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7');
  request.SetHeaderMap(map);
end;
Does not send referer but sends Accept_language (and even User-Agent).
But if I type

Code: Select all

  for i:=1 to map.Size do
  begin
    ShowMessage(map.Key[i]+':'+map.Value[i])
  end;
I see the last string is
referer:https://google.com
So,

Code: Select all

request.SetHeaderMap(map);
does not send referer. What's the matter?

Re: Unable to set referer

Posted: Fri Aug 21, 2020 7:07 am
by andreykrasnodar
I can send referer with

Code: Select all

  Header.append('referer', 'https://google.com');
and it works on POST requests. But if you set request method with

Code: Select all

  request.Method:='GET';
Header 'referer' does not appear.

Re: Unable to set referer

Posted: Fri Aug 21, 2020 7:07 pm
by andreykrasnodar
Any ideas?
I think, the problem is in flags or CEF settings. As I remember, some browsers do not send referer.

Re: Unable to set referer

Posted: Fri Aug 21, 2020 8:32 pm
by andreykrasnodar
I found SendReferrer option in new CEF. But there is no in old CEF.
SendReferrer : Set to True if you want to send the 'referer' header.
Yes, I want, help me please

Re: Unable to set referer

Posted: Fri Aug 21, 2020 9:05 pm
by Student
попробуй так
request.SetReferrer(refererurl, REFERRER_POLICY_DEFAULT);

Re: Unable to set referer

Posted: Sat Aug 22, 2020 8:27 am
by andreykrasnodar
Student wrote: Fri Aug 21, 2020 9:05 pm попробуй так
request.SetReferrer(refererurl, REFERRER_POLICY_DEFAULT);
Undeclared identifier: 'setreferrer'.

Re: Unable to set referer

Posted: Sat Aug 22, 2020 9:14 am
by Student
А по какой причине ты сидишь на таком старье? Есть же компонент OldCEF4Delphi для поддержки winXP и там есть все эти методы которые нужны тебе.

Re: Unable to set referer

Posted: Sat Aug 22, 2020 10:58 am
by andreykrasnodar
Скачал эту версию, написал на ней программу, теперь вылавливаю ошибки. Перейти на более новый OLDCEF4Delphi - значит много переписать кода.

Re: Unable to set referer

Posted: Sat Aug 22, 2020 11:19 am
by Student
Ну смотри сам, а так упрешься все равно в стену, что чего то не будет хватать, то что в старом libcef многое не работает так как надо. А переписать, в чем там сложность? Названия методов другие? Так создай свой класс с нужным названием и через него обращайся к хромиуму.

Re: Unable to set referer

Posted: Sat Aug 22, 2020 12:03 pm
by andreykrasnodar
I hope there is only one setting which allow my program to send referer. If not, I have to re-write it with new CEF.
P.S. What's the last version of CEF which will work on Windows XP?