14

这是我尝试过的:

curl http://git.ep.petrobras.com.br/api/v3/session --data-urlencode 'login=myUser&password=myPass'

回答:

{"message":"401 Unauthorized"}

4

3 回答 3

17

问题是data-urlencodeCURL 选项。由于它是一个 HTTP POST,因此您不需要对数据进行 URL 编码,并且实际上是对数据进行编码&&导致您的问题。而是使用该--data选项。

curl http://git.ep.petrobras.com.br/api/v3/session --data 'login=myUser&password=myPass'

此外,请小心通过普通 HTTP 发送凭据。它很容易被嗅到。

于 2014-05-19T13:41:30.917 回答
10

这是如何:

$ curl http://git.ep.petrobras.com.br/api/v3/session/ --data-urlencode 'login=myUser' --data-urlencode 'password=myPass'

如果您的用户名或密码包含必须进行 urleencoded 的字符,则 Steven 指出的解决方案不起作用。该name=content格式将对content零件进行urlencode(name零件必须进行urlencoded,但是login很好password)。

要实际检索,private_token您可以将 curl 的输出通过管道传输到 jq 中,如下所示:

$ curl [as above] | jq --raw-output .private_token
x_the_private_token_value_x

通过这种方式,您可以轻松地在 shell 脚本中使用它。

另外,正如 Steven 已经指出的那样,请改用 https,这样您的密码就不会以明文形式通过网络传输。

于 2015-03-15T20:15:55.053 回答
2

注意:此工作流程从 GitLab 8.6.0 开始不再有效,因为已删除默认密码。

变更日志:https ://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG#L205

我只是注意到这一点并提出了这个问题。把这个笔记留在这里,希望能节省一些时间。希望这是一个将被审查和恢复的决定。

讨论/问题:https ://gitlab.com/gitlab-org/gitlab-ce/issues/1980

于 2016-04-25T11:48:44.217 回答