我想使用 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 会发生什么?
最佳答案
What is the way to make this with Indy ?
TIdHTTP
Indy 10 有 2 个重载 Options()
方法:
procedure Options(AURL: string; AResponseContent: TStream); overload;
function Options(AURL: string
{$IFDEF STRING_IS_ANSI}; ADestEncoding: IIdTextEncoding = nil{$ENDIF}
): string; overload;
什么TIdHTTP
Origin
没有 native 属性和Access-Control-Request-...
header 。但是,您可以使用TIdHTTP.Request.CustomHeaders
那些的属性(property),例如:
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 ?
服务器可能会返回一个错误代码,其中 TIdHTTP
将筹集资金为 EIdHTTPProtocolException
除非您启用hoNoProtocolErrorException
,否则异常(exception)标志在 TIdHTTP.HTTPOptions
属性。
关于德尔福印地 http 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42630741/