为什么此 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'
密码字段需要用引号引起来。
我在我的服务器上安装了一个插件,用于验证用户凭据,响应基本上是 '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'
密码字段需要用引号引起来。