Delphi indy 10 TIdWebDav是否支持对用户名中包含unicode字符的用户进行身份验证?
我试图连接到的一个web服务的作者告诉我,我发送到他们的Apache web服务器的webdav模块的用户名在报头中没有编码=utf-8,或者报头需要mime64编码,因此上传用户的用户ID可以包含unicode字符,未被接受和解码 我想知道的是,我是否可以在TidWebDAV中设置一个属性,该属性将改变http编码的方式,从而允许对包含无法以普通ascii显示的unicode字符的用户名进行身份验证。我想AuthenticationManager属性可能与此有关。在印地9号文件中,它说“这片土地没有任何作用”。它在印地10号有什么作用吗?看起来它已经实现了 我还不明白的秘密包括: (1) “logintype”(带整数值)在webdav中的作用是什么?我应该将其设置为什么值?目前,我的代码将其设置为3 (2) 我是否需要强制使用hoForceEncodeParams对参数进行编码 (3) 如何以远程端将看到的形式检查标头Delphi indy 10 TIdWebDav是否支持对用户名中包含unicode字符的用户进行身份验证?,delphi,utf-8,webdav,indy,indy10,Delphi,Utf 8,Webdav,Indy,Indy10,我试图连接到的一个web服务的作者告诉我,我发送到他们的Apache web服务器的webdav模块的用户名在报头中没有编码=utf-8,或者报头需要mime64编码,因此上传用户的用户ID可以包含unicode字符,未被接受和解码 我想知道的是,我是否可以在TidWebDAV中设置一个属性,该属性将改变http编码的方式,从而允许对包含无法以普通ascii显示的unicode字符的用户名进行身份验证。我想AuthenticationManager属性可能与此有关。在印地9号文件中,它说“这片土
更新:正如remy所说,NTLM身份验证支持unicode字符。我还发现,您可以在基本身份验证中使用unicode utf8 mime(base64)编码字符串,以“用户名:密码”的形式。TIdAuthenticationManager的目的是保持身份验证参数的缓存,以便成功登录到特定URL。没别的了
TIdHTTP
在身份验证期间不使用该缓存,但如果需要,您可以在OnSelectAuthentication
和OnAuthentication
事件中自己使用该缓存
在这种情况下,实际使用的是哪种身份验证方案?webdav模块希望在哪个标头中指定字符编码?在Indy 10中,NTLM类在散列期间支持Unicode字符串,但它们使用UTF-16,而不是UTF-8
webdav作者能否提供更多关于他对您的实际期望的信息
要回答您的其他问题:
(1) 你指的是什么“登录类型”?Indy中没有此类属性或参数
(2) hoForceEncodeParams仅在调用Post()为“application/x-www-form-urlencoded”请求发送TStrings对象时适用。它对身份验证没有影响
(3) 要查看通过连接来回传输的数据,可以将
TIdLog…
组件(如TIdLogFile
或TIdLogEvent
)附加到Intercept
属性。或者使用外部数据包嗅探器,如Wireshark。WebDav模块是在Apache Httpd内部运行的标准WebDav模块。实际上,它看起来像是被修改了一点,或者这个插件中有插件。明天我将进一步了解远程端(即C/C++)。我认为“logintype”可能是这个稍微修改过的webdav模块的具体实现细节。我编辑了答案,而不是昨天的问题。是否可以撤消该问题?