Вы знаете, как вручную добавить пользовательский заголовок в TISAPIRequest?.Добавить пользовательский заголовок на TISAPIRequest (сервер Datasnap Delphi 10.1)
Этот класс (или самый общий TWebRequest) не предоставляет свойство RawHeaders, позволяющее при необходимости добавлять новые настраиваемые заголовки.
PS: У меня есть грязное решение, когда мой WebRequest является TIdHTTPAppRequest (автономный сервер Datasnap), потому что тогда я могу создать класс-помощник для доступа к его собственному свойству FRequestInfo и оттуда получить доступ к RawHeaders, который Я могу использовать для добавления нового заголовка. Но я использую только автономные серверы для разработки и тестирования, рабочая среда должна запускаться на серверах IIS.
TIdHTTPAppRequestHelper = class helper for TIdHTTPAppRequest
public
function GetRequestInfo: TIdEntityHeaderInfo;
end;
implementation
function TIdHTTPAppRequestHelper.GetRequestInfo: TIdEntityHeaderInfo;
begin
Result := FRequestInfo;
end;
procedure TWebModule1.WebModuleBeforeDispatch(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var Token: string;
begin
Response.SetCustomHeader('Access-Control-Allow-Origin','*');
Token := Request.Query;
if Copy(Token, 1, 10) = 'dssession=' then begin
if Request is TIdHTTPAppRequest then begin
TIdHTTPAppRequest(Request).GetRequestInfo.RawHeaders.AddValue('Pragma', Token);
end;
end;
if FServerFunctionInvokerAction <> nil then
FServerFunctionInvokerAction.Enabled := AllowServerFunctionInvoker;
end;
можно написать подобный код, чтобы получить тот же результат (добавить пользовательский заголовок к вашему WebRequest), когда WebRequest является TISAPIRequest вместо THTTPAppRequest?.
спасибо.
Спасибо Реми, я собираюсь написать этот фильтр ISAPI. –