繁体   English   中英

为什么这种卷曲用法在Windows上有效,但在OSX / iOS上无效?

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

我在服务器上安装了一个插件,该插件可以验证用户凭据,并以“有效”或“无效”作为响应。

在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请求之间有几层,我不清楚问题可能在哪里出现。

我确保卷曲版本之间相隔数月之内。

Windows上 ,正确的格式是:curl -X POST REDACTED -H“授权:基本已删除” -F username = REDACTED -F password = REDACTED

但是在OSX上 ,正确的格式是:curl -X POST RETEDTED -H“授权:基本已删除” -F username = REDACTED -F'password = REDACTED'

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM