我已將 axios 發布請求格式化如下:
var config = {
method: 'post',
url: 'https://us.battle.net/oauth/token',
headers: {
'Authorization': 'Basic ' process.env.BATTLENET_CLIENT ':' process.env.BATTLENET_SECRET,
...data.getHeaders()
},
data : data
};
這被 401 拒絕了。但是,當我從 Postman 生成代碼片段時,它的功能是相同的,除了 Authorization 是生成的看似隨機的字串:
var config = {
method: 'post',
url: 'https://us.battle.net/oauth/token',
headers: {
'Authorization': 'Basic reallyRandomLongStringIsNotClientIDAndSecretKey=',
...data.getHeaders()
},
data : data
};
將其插入我的代碼使其作業。我很好奇在編碼基本身份驗證憑據時是否缺少某些東西,因為郵遞員似乎已將其轉換/加密為我無法弄清楚的東西?
uj5u.com熱心網友回復:
您只需要將帶有用戶名和密碼/密碼的字串編碼為 Base64,如下所示:
const encodedAuthorization = Buffer.from(`${process.env.BATTLENET_CLIENT}:${process.env.BATTLENET_SECRET}`).toString('base64')
var config = {
method: 'post',
url: 'https://us.battle.net/oauth/token',
headers: {
'Authorization': `Basic ${encodedAuthorization}`,
...data.getHeaders()
},
data : data
};
uj5u.com熱心網友回復:
Basic-Auth-Authentication-Scheme 的功能如下:
- 客戶端以“用戶名”和“密碼”的形式提供憑據。
- 用戶名和密碼用冒號連接:“用戶名:密碼”
- 連接的字串以 base64 編碼
- 然后,標頭值是 base64 編碼的字串,前綴為“Basic”
下面你可以看到一個 javascript 實作:
const userName = "username"
const password = "password"
const authenticationHeader = "Basic " btoa(`${userName}:${password}`)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/464935.html
