我想使用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


用Indy做到这一点的方法是什么?

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


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

最佳答案

用Indy做到这一点的方法是什么?


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属性中启用了EIdHTTPProtocolException标志,否则hoNoProtocolErrorException将作为TIdHTTP.HTTPOptions异常引发。

关于delphi - Delphi Indy http选项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42630741/

10-12 01:20