简体   繁体   中英

Delphi Indy http OPTIONS

I'd like to use the 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

What is the way to make this with Indy ?

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

What will happen if the OPTIONS is not implemented by the server ?

What is the way to make this with Indy ?

TIdHTTP in Indy 10 has 2 overloaded Options() methods:

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

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

What TIdHTTP does not have is native properties for the Origin and Access-Control-Request-... headers. However, you can use the TIdHTTP.Request.CustomHeaders property for those, eg:

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);

What will happen if the OPTIONS is not implemented by the server ?

The server will likely return an error code, which TIdHTTP will raise as an EIdHTTPProtocolException exception unless you enable the hoNoProtocolErrorException flag in the TIdHTTP.HTTPOptions property.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM