这是
a prior question of mine的后续问题.我已经了解到,在请求中使用HTTP用户名/密码参数时,预计会有2个不同的Get请求发送到服务器.第一次尝试不包括用户名/密码凭据,但如果身份验证失败,则会发送另一个包含这些凭据的相同请求.
但是,在使用Indy的TIdHTTP时,它只发送一个请求,该请求因未授权而失败.需要第二个相同的连续请求才能实际获得响应.
我想知道,这是设计,还是Indy的缺陷?
解决方法
你需要确保你:
>在TIdHTTP.HTTPOptions属性中启用了hoInProcessAuth标志.
>要么:
一个.分配的OnAuthorization事件处理程序,用于设置Authentication.UserName和Authentication.Password参数,并将Handled参数设置为True.
湾分配给TIdHTTP.Request.Password属性的非空字符串.
>您的uses子句中指定的任何必需的IdAuthentication …单元(例如IdAuthenticationNTLM或IdAuthenticationSSPI)或IdAllAuthentications单元.
如果不满足这些条件,TIdHTTP将不会尝试处理基于HTTP的身份验证.