我在服务器上安装了一个插件,该插件可以验证用户凭据,并以“有效”或“无效”作为响应。
在Windows上,我可以通过以下方式成功查询服务器:
curl -X POST REDACTED -H "Authorization: Basic REDACTED" -F username=REDACTED -F password=REDACTED
特殊的,令人讨厌的注释-Windows中由于命令提示符看似如何处理输入而需要双引号。
但是,我无法在OSX或iOS上复制此结果。在此,结果始终错误地为“无效”。我认为OSX和Windows之间的终端如何处理curl的输入有细微的差别,因此实际的HTTP请求与Windows有所不同。因此,我尝试在Swift中直接发出HTTP请求:
let loginString = String(format: "%@:%@", REDACTED, REDACTED)
let loginData = loginString.data(using: String.Encoding.utf8)!
let base64LoginString = loginData.base64EncodedString()
let url = URL(string: REDACTED)!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Basic \(base64LoginString)", forHTTPHeaderField: "Authorization")
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
request.httpBody = "username=\(String(describing: username.text))&password=\(String(describing: password.text))".data(using: .utf8)
结果是一样的; '无效'。用户提供的信息与传出的HTTP请求之间有几层,我不清楚问题可能在哪里潜伏。
我确保卷曲版本在彼此相距几个月之内。
答案 0 :(得分:0)
在 Windows 上,正确的格式为: curl -X POST RETEDTED -H“授权:基本已删除” -F用户名=已删除-F密码=已删除
但是在 OSX 上,正确的格式为: curl -X POST RETEDTED -H“授权:基本已删除” -F username = REDACTED -F'password = REDACTED'
密码字段必须用引号引起来。