- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 Indy TIdHTTP 通过 BasicAuthentication 进行获取请求。
代码工作正常,但如果用户使用正确的登录密码重新输入凭据并再次发送请求,TIdHTTP 在第一个 401 之后不会清除 BasicAuthentication 凭据。用户必须登录两次才能授权。
用户操作顺序:
Step 1. User type wrong login-password: ResponseCode = 401
Step 2. User type right login-password: ResponseCode = 401
Step 3. User type right login-password: ResponseCode = 200
我认为第 2 步的结果是一个错误。我该怎么办?
简单代码:
var
IdHTTP1: TIdHTTP;
fLogin : string;
fPassword : string;
/// ...
if ( fLogin <> '' ) and ( fPassword <> '' )
then
begin
if ( IdHTTP1.Request.Username <> fLogin )
or
( IdHTTP1.Request.Password <> fPassword )
then
begin
IdHTTP1.Request.BasicAuthentication := True;
IdHTTP1.Request.Username := fLogin;
IdHTTP1.Request.Password := fPassword;
end;
s := IdHTTP1.Get( 'some_url' );
response_code := Idhttp1.response.ResponseCode;
case response_code of
200:
begin
// parse request data
end;
401 : Result := nc_res_Auth_Fail;
else Result := nc_res_Fail;
end;
end;
最佳答案
您应该在更改之前清除您的身份验证
if Assigned(IdHTTP1.Request.Authentication) then
begin
IdHTTP1.Request.Authentication.Free;
IdHTTP1.Request.Authentication:=nil;
end;
或者你可以这样改变它
if Assigned(IdHTTP1.Request.Authentication) then
begin
IdHTTP1.Request.Authentication.Username:=...;
IdHTTP1.Request.Authentication.Password:=...;
end else
begin
IdHTTP1.Request.BasicAuthentication:=True;
IdHTTP1.Request.Username:=...;
IdHTTP1.Request.Password:=...;
end;
关于delphi - 如何清除 Indy TIdHTTP BasicAuthentication 凭据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30076775/
我正在尝试完成一个简单的任务:使用 BASIC Auth 保护我的 ASP.NET WEBAPI(建立在 Katana 之上)。我知道我可以实现自己的中间件或消息处理程序或其他任何东西。但是我想知道这
我试用了位于 http://book.cakephp.org/2.0/en/tutorials-and-examples/simple-acl-controlled-application/simpl
我使用 Indy TIdHTTP 通过 BasicAuthentication 进行获取请求。 代码工作正常,但如果用户使用正确的登录密码重新输入凭据并再次发送请求,TIdHTTP 在第一个 401
您好,我想打开这个网址 http://3864.cloud-matic.net/从我的 android webview 中,我尝试了很多方法,但该应用程序甚至没有打开 mainActivity。我尝试
我正在构建一个名为 Git Crx 的 Chrome 打包应用程序,顾名思义,它需要使用 HTTPS(智能协议(protocol))向远程 git repos 发送网络请求,但是如果你尝试对一个 ur
为什么以下结果会导致“未经授权”响应: webClient .getAbs("http://hello.com") .basicAuthenticat
我正在尝试调试不断收到的 System.Web.HttpException。它可能与我正在尝试实现的 BaiscAuthentication 自定义 HttpModule 有关。 BasicAuthe
好吧,我正在使用 netcoreapp2.2 ,并且我已将我的项目配置为使用“BasicAuthentication”,一切似乎都很好。 services.AddAuthent
我是一名优秀的程序员,十分优秀!