Delphi Indy http选项

eyh26e7m  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(226)

我想使用HTTP选项

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

有什么办法让印第这样做呢?

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

如果服务器未实现OPTIONS,会发生什么情况?

flvtvl50

flvtvl501#

有什么办法让印第这样做呢?
Indy 10中的TIdHTTP有2个重载的Options()方法:

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

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

TIdHTTP没有OriginAccess-Control-Request-...标头的本机属性。但是,您可以使用TIdHTTP.Request.CustomHeaders属性来表示这些属性,例如:

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

如果服务器未实现OPTIONS,会发生什么情况?
服务器可能会传回错误码,除非您启用TIdHTTP.HTTPOptions属性中的hoNoProtocolErrorException旗标,否则TIdHTTP会将此错误码引发为EIdHTTPProtocolException例外状况。

相关问题