我正在尝试执行这样的操作:
wget --user=foo --password=bar! url
Run Code Online (Sandbox Code Playgroud)
这 !在密码中导致问题。我试过用 \ 转义它,如
--password=bar\!
Run Code Online (Sandbox Code Playgroud)
我试过用单引号和双引号封装。我把密码放在一个单独的文件中并尝试
--密码=cat pass.txt
每次,我都会收到 403 Forbidden。使用 -d,我看到 SSL 握手成功。在 Windows 命令行上,该命令有效。我的假设是我需要逃避 ! 不同,但我不知道还有什么。
尝试使用引号:
--password="bar\!" 或者 --password='bar\!'
服务器端的错误是什么?
更新:
我在运行 Apache 2.2.14 的 Ubuntu 10.4 机器上进行了测试。wget --user=foo --password=bar! url为我工作。
如果我使用错误的密码,我会收到类似user foo: authentication failure for "/directorytest/": Password Mismatch.
再次更新:(退一步)
你说这个错误是“客户端被服务器配置拒绝”。我浏览了 Apache 源,此错误消息来自mod_authz_host。这表明您的问题不在于密码(即身份验证),而是您的客户端主机无权访问此 Apache 资源。mod_authz_host 处理主机名和 IP。
在上面,您说“在 Windows 命令行上,该命令有效。” 您的所有测试都来自同一个客户端系统吗?您是否在同一个 Windows 系统上运行“wget”?如果您尝试使用 IE 或 Firefox 访问相同的 URL,会发生什么?