为什么此 curl 用法适用于 Windows 但不适用于 OSX / iOS?

Why does this curl usage work on Windows but not on OSX / iOS?

我在我的服务器上安装了一个插件,用于验证用户凭据,响应基本上是 'Valid' 或 'Invalid'。

在 Windows,我可以通过以下方式成功查询我的服务器:

curl -X POST REDACTED -H "Authorization: Basic REDACTED" -F username=REDACTED -F password=REDACTED

特别令人讨厌的注意事项 -- Windows 由于命令提示符处理输入的方式,双引号是必需的。

但是,我无法在 OSX 或 iOS 上复制此结果。在这里,结果总是错误地 'Invalid'。我假设终端在 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)

结果是一样的; 'Invalid'。在用户提供的信息和传出的 HTTP 请求之间有几层,我不清楚问题可能潜伏在哪里。

我确保 curl 版本彼此相隔几个月。

Windows上,正确的形式是: curl -X POST REDACTED -H "Authorization: Basic REDACTED" -F 用户名=REDACTED -F 密码=REDACTED

但是在OSX,正确的形式是: curl -X POST REDACTED -H "Authorization: Basic REDACTED" -F username=REDACTED -F 'password=REDACTED'

密码字段需要用引号引起来。