错误代码 401,HTTP 令牌:访问被拒绝
error code 401, HTTP Token: Access denied
我是 API 的新手。
我一直在尝试使用这个名为 Carbon Interface 的 API。它应该根据您使用的电量来估算您的碳足迹。我创建了这个快速项目来测试它,但每当我尝试使用它时,我都会收到错误代码 401,我查找它发现它是未经授权/HTTP 令牌:访问被拒绝。我放了我的 API 密钥,而不是令牌,我只是用它来解决这个问题
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Axios Crash Course</title>
</head>
<body>
<button id="submit">submit</button>
<script>
document.getElementById('submit').addEventListener("click", getdata)
function getdata() {
fetch('https://www.carboninterface.com/api/v1/estimates', {
method: 'POST',
header: {
'Authorization': 'Bearer Token'
},
data: {
"type": "electricity",
"electricity_unit": "mwh",
"electricity_value": 42,
"country": "us",
"state": "ca"
}
}).then(response => response.json())
.then(data => console.log(data)).catch(error => {
console.error('There has been a problem with your fetch operation:', error);
});
}
</script>
</body>
</html>
在您的代码中,
header: { 'Authorization': 'Bearer Token' },
你写的Token应该是token的实际值。不只是一句话。应该是token
,用于验证真伪。
令牌的实际值如下所示:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjYwYTkzODgxNmQyMGRiMDAxMWVmMjliMSIsInVzZXJuYW1lIjoic2FyaXRhZyIsInVzZXJUeXBlIjoiYWRtaW4iLCJyb2xlIjoiYWRtaW4iLCJmaXJzdE5hbWUiOiJzYXJpdGEiLCJsYXN0TmFtZSI6Imdhd2FkZSIsImlhdCI6MTYyNzAxOTI0MiwiZXhwIjoxNjU4NTc2ODQyfQ.JhdwWO_tdkq6M3aYWI-YxqZo7iLOQ9IBmFMb7Jqid5E
这是一个站点:https://jwt.io/,您可以在其中输入 payload 并获取 token 的值。该站点有时非常高效。
下面是我如何写入 set auth token
的代码
从“axios”导入 axios;
const setAuthToken = token => {
if (token) {
axios.defaults.headers.common["Authorization"] = "Bearer " + token;
axios.defaults.headers['Content-Type'] = 'application/json;charset=UTF-8';
axios.defaults.headers['Access-Control-Allow-Origin'] = "*";
} else {
delete axios.defaults.headers.common["Authorization"];
}
};
export default setAuthToken;
这是生成和发送 token
的代码:
var jwt = require('jsonwebtoken');
var createToken = function(tokenObj) {
const expiresIn = '5 days';
const secretOrKey = process.env.JWT_TOKEN_SECRET;
const token = jwt.sign(tokenObj, secretOrKey, {
expiresIn: expiresIn
});
return token;
}
module.exports = {
generateToken: function(req, res, next) {
req.jwtToken = createToken(req.tokenObj);
return next();
},
sendToken: function(req, res) {
res.setHeader("Access-Control-Expose-Headers", "X-Auth-Token");
res.setHeader('x-auth-token', req.jwtToken);
return res.status(200).send(JSON.stringify(req.tokenObj));
}
};
我已经向您展示了一个这样的例子。希望这对你有帮助。
我是 API 的新手。 我一直在尝试使用这个名为 Carbon Interface 的 API。它应该根据您使用的电量来估算您的碳足迹。我创建了这个快速项目来测试它,但每当我尝试使用它时,我都会收到错误代码 401,我查找它发现它是未经授权/HTTP 令牌:访问被拒绝。我放了我的 API 密钥,而不是令牌,我只是用它来解决这个问题
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Axios Crash Course</title>
</head>
<body>
<button id="submit">submit</button>
<script>
document.getElementById('submit').addEventListener("click", getdata)
function getdata() {
fetch('https://www.carboninterface.com/api/v1/estimates', {
method: 'POST',
header: {
'Authorization': 'Bearer Token'
},
data: {
"type": "electricity",
"electricity_unit": "mwh",
"electricity_value": 42,
"country": "us",
"state": "ca"
}
}).then(response => response.json())
.then(data => console.log(data)).catch(error => {
console.error('There has been a problem with your fetch operation:', error);
});
}
</script>
</body>
</html>
在您的代码中,
header: { 'Authorization': 'Bearer Token' },
你写的Token应该是token的实际值。不只是一句话。应该是token
,用于验证真伪。
令牌的实际值如下所示:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjYwYTkzODgxNmQyMGRiMDAxMWVmMjliMSIsInVzZXJuYW1lIjoic2FyaXRhZyIsInVzZXJUeXBlIjoiYWRtaW4iLCJyb2xlIjoiYWRtaW4iLCJmaXJzdE5hbWUiOiJzYXJpdGEiLCJsYXN0TmFtZSI6Imdhd2FkZSIsImlhdCI6MTYyNzAxOTI0MiwiZXhwIjoxNjU4NTc2ODQyfQ.JhdwWO_tdkq6M3aYWI-YxqZo7iLOQ9IBmFMb7Jqid5E
这是一个站点:https://jwt.io/,您可以在其中输入 payload 并获取 token 的值。该站点有时非常高效。
下面是我如何写入 set auth token
的代码从“axios”导入 axios;
const setAuthToken = token => {
if (token) {
axios.defaults.headers.common["Authorization"] = "Bearer " + token;
axios.defaults.headers['Content-Type'] = 'application/json;charset=UTF-8';
axios.defaults.headers['Access-Control-Allow-Origin'] = "*";
} else {
delete axios.defaults.headers.common["Authorization"];
}
};
export default setAuthToken;
这是生成和发送 token
的代码:
var jwt = require('jsonwebtoken');
var createToken = function(tokenObj) {
const expiresIn = '5 days';
const secretOrKey = process.env.JWT_TOKEN_SECRET;
const token = jwt.sign(tokenObj, secretOrKey, {
expiresIn: expiresIn
});
return token;
}
module.exports = {
generateToken: function(req, res, next) {
req.jwtToken = createToken(req.tokenObj);
return next();
},
sendToken: function(req, res) {
res.setHeader("Access-Control-Expose-Headers", "X-Auth-Token");
res.setHeader('x-auth-token', req.jwtToken);
return res.status(200).send(JSON.stringify(req.tokenObj));
}
};
我已经向您展示了一个这样的例子。希望这对你有帮助。