0

我需要像这样执行 curl 请求:

curl -u "apikey:{apikey}" "{url}"

我怎么能在javascript中做到这一点?特别是我在将 -u curl 字段处理为 javascript 请求时遇到了一些麻烦。

4

4 回答 4

2

Authorization: Basic <base64 of apikey:value>使用 JavaScript 时,您必须使用 API 密钥指定基本身份验证标头 ( )。如果您使用的是 XMLHttpRequest,请查看以下内容:https ://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/setRequestHeader

于 2019-02-11T12:01:33.693 回答
0

你不能从 curl 调用 javascript。您确定要调用 javascript 而不是发布 json 吗?

前任

curl -i -X POST -u user:userpass -H 'Accept: application/json' -H 'Content-type: application/json' --url 'http://myserver' -d '{
  apikey:"ddasds",
  url:"http://myserver"
}'
于 2019-02-11T12:07:41.807 回答
0

要扩展@whirlwin 的答案,您可以使用以下代码生成所需的标头值:

const apiKey = "someApiKey"
const basicAuthValue = Buffer.from(`apikey:${apikey}`).toString("base64");
const authHeaderValue = `Basic ${basicAuthValue}`

//node
let requestOpts = {/* node http options */}; 
requestOpts = { 
    ...requestOpts, 
    headers: { 
        ...requestOpts.headers, 
        "Authorization": authHeaderValue 
    } 
}

//browser
const request = new XMLHttpRequest();
request.setRequestHeader("Authorization", authHeaderValue)
于 2019-02-11T12:10:18.347 回答
0

这是香草js的解决方案。

var request = new XMLHttpRequest();
request.open("GET", yourUrl, true);
request.setRequestHeader("apikey","someapikey778229"); 
request.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
        //do something here;
    }
};
request.send();
于 2019-02-11T12:12:16.747 回答