Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi indy 10 TIdWebDav是否支持对用户名中包含unicode字符的用户进行身份验证?_Delphi_Utf 8_Webdav_Indy_Indy10 - Fatal编程技术网

Delphi indy 10 TIdWebDav是否支持对用户名中包含unicode字符的用户进行身份验证?

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号文件中,它说“这片土

我试图连接到的一个web服务的作者告诉我,我发送到他们的Apache web服务器的webdav模块的用户名在报头中没有编码=utf-8,或者报头需要mime64编码,因此上传用户的用户ID可以包含unicode字符,未被接受和解码

我想知道的是,我是否可以在TidWebDAV中设置一个属性,该属性将改变http编码的方式,从而允许对包含无法以普通ascii显示的unicode字符的用户名进行身份验证。我想AuthenticationManager属性可能与此有关。在印地9号文件中,它说“这片土地没有任何作用”。它在印地10号有什么作用吗?看起来它已经实现了

我还不明白的秘密包括:

(1) “logintype”(带整数值)在webdav中的作用是什么?我应该将其设置为什么值?目前,我的代码将其设置为3

(2) 我是否需要强制使用hoForceEncodeParams对参数进行编码

(3) 如何以远程端将看到的形式检查标头


更新:正如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模块的具体实现细节。我编辑了答案,而不是昨天的问题。是否可以撤消该问题?