2017-03-06 1 views
2

Je voudrais utiliser les options HTTPDelphi Indy http OPTIONS

OPTIONS /MyURL/DoCmd HTTP/1.1 
Origin: http://www.asite.com 
Access-Control-Request-Method: POST 
Access-Control-Request-Headers: access-control-request-method 

Quelle est la façon de faire cela avec Indy?

FIdHttp.Options('http://' + FHost + ':' + IntToStr(FPort) + '/MyURL/DoCmd', AResponseContent); 

Que se passera si les options ne sont pas mises en œuvre par le serveur?

Répondre

4

Quelle est la façon de faire cela avec Indy?

TIdHTTP en Indy 10 a 2 surchargé Options() méthodes:

procedure Options(AURL: string; AResponseContent: TStream); overload; 

function Options(AURL: string 
    {$IFDEF STRING_IS_ANSI}; ADestEncoding: IIdTextEncoding = nil{$ENDIF} 
): string; overload; 

Qu'est-ce que TIdHTTP ne pas est-propriétés natives pour les en-têtes et OriginAccess-Control-Request-.... Cependant, vous pouvez utiliser la propriété TIdHTTP.Request.CustomHeaders pour ceux-ci, par exemple:

FIdHttp.Request.CustomHeaders.Values['Origin'] := 'http://www.asite.com'; 
FIdHttp.Request.CustomHeaders.Values['Access-Control-Request-Method'] := ' POST'; 
FIdHttp.Request.CustomHeaders.Values['Access-Control-Request-Headers'] := 'access-control-request-method'; 
FIdHttp.ProtocolVersion := pv1_1; 

Response := FIdHttp.Options('http://www.asite.com/MyURL/DoCmd'); 
or 
FIdHttp.Options('http://www.asite.com/MyURL/DoCmd', AResponseContent); 

Que se passera si les options ne sont pas mises en œuvre par le serveur?

Le serveur retournera probablement un code d'erreur qui TIdHTTP soulèvera comme une exception EIdHTTPProtocolException à moins que vous activez l'indicateur hoNoProtocolErrorException dans la propriété TIdHTTP.HTTPOptions.

+0

Dans Delphi Berlin, j'ai seulement des options de procédure pour Indy. On dirait qu'avec mon serveur qui est un "serveur fait à la main": ça me pose une erreur sans message même si le journal du serveur répond aux informations pour la méthode OPTIONS –

+0

J'ai le même problème avec TNetHTTPRequest –