我有一个 Ktor 客户端从具有基本身份验证的服务器请求。
当我
install()
按照文档进行基本身份验证时,它不起作用 - 我返回 HTTP 401。
val response1 =
HttpClient(Java.create()) {
install(Auth) {
basic {
credentials {
BasicAuthCredentials("[email protected]", pass)
}
}
}
}
.use { it.get("https://mycompany.something.net/rest/servicedeskapi/request") }
我需要将身份验证添加到请求中才能使其正常工作:
.use {
it.get("https://mycompany.something.net/rest/servicedeskapi/request") {
basicAuth("[email protected]", pass)
}
}
为什么客户端的auth设置不够?我是不是做错了什么?
发布后不久,我发现它实际上是Ktor客户端身份验证功能不发送授权标头的重复
因此,简而言之:出于某种原因,默认情况下,Ktor 选择不发送
Authorization
标头,直到授权失败。恕我直言,这不是太幸运的决定。
这可以通过
sendWithoutRequest { true }
更改:
install(Auth) {
basic {
sendWithoutRequest { true }
credentials { BasicAuthCredentials(user, pass) }
}
}