向http请求添加授权标头时,cURL中的-u是什么

时间:2018-03-03 16:24:57

标签: api curl mixpanel

我正在尝试测试Mix Panel的一个API端点。我使用Postman执行此操作,在Mix Panel的文档中,他们使用cURL向您展示如何发出请求。当输入URL和请求的POST数据时,它的工作方式是它到达正确的位置,并告诉我需要通过添加授权标头进行身份验证。我感到困惑的是,标题的关键是什么?在他们的cURL示例中,它是-u API_SECRET,授权标题密钥也是'用户名' ?

来自文档

# this uses a test project API secret, replace ce08d087255d5ceec741819a57174ce5
# with your own API secret
curl https://mixpanel.com/api/2.0/jql \
    -u ce08d087255d5ceec741819a57174ce5: \
    --data-urlencode params='{"from_date":"2016-01-01", "to_date": "2016-01-07"}' \
    --data-urlencode script='function main(){ return Events(params).groupBy(["name"], mixpanel.reducer.count()) }'

如果我想创建一个AJAX查询,例如

$.ajax({
        method: 'POST',
        url: 'https://mixpanel.com/api/2.0/jql',
        data: {
            'params': '{"from_date":"2016-01-01", "to_date": "2016-01-07"}',
            'script': '\'function main(){ return Events(params).groupBy(["name"], mixpanel.reducer.count()) }\''
        },
        headers: {
            <WHAT GOES HERE>: API_SECRET
        }
        }).then(function success(response){
            console.log('SUCCESS');
            console.log(response)
        }, function error(response){
            console.log('There was an error running JQL');
            console.log(response.error)
});

1 个答案:

答案 0 :(得分:1)

在这种情况下,您的API_SECRET是用户名,没有密码。因此,在没有任何“用户名”密钥的情况下使用curl -u <API_SECRET>:是正确的。

在示例调用https://mixpanel.com/help/reference/data-export-api

的mixpanel文档中
  

授权步骤Data Export API接受基本访问   通过HTTPS进行身份验证作为授权方法。做一个   授权请求,将您项目的API Secret放入“用户名”   基本访问身份验证标头的字段。确保你使用   HTTPS而不是HTTP - 我们的API拒绝通过HTTP发出的请求,因为   这会以纯文本形式通过互联网发送您的API密码。

     

示例以下是经过适当身份验证的请求的示例   与cURL:

     

卷曲https://mixpanel.com/api/2.0/segmentation/ \       -u YOUR_API_SECRET:\       -d from_date =“2016-02-11”-d to_date =“2016-02-11”-d event =“Viewed pages”