我需要执行以下卷曲请求:
curl -u "apikey:{apikey}" "{url}"
如何在javascript中执行此操作?特别是我在处理-u curl字段到javascript请求时遇到了一些麻烦。
答案 0 :(得分:2)
使用JavaScript时,必须使用API密钥指定基本身份验证标头(Authorization: Basic <base64 of apikey:value>
)。如果您使用的是XMLHttpRequest,请查看以下内容:https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/setRequestHeader
答案 1 :(得分:0)
您不能通过curl调用javascript。 您确定要调用javascript而不发布json吗?
ex
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"
}'
答案 2 :(得分: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)
答案 3 :(得分: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();