提问者:小点点

将令牌传递给react native中的授权标头


我是相当新的反应本地人,所以请温柔:)

我需要将令牌传递给授权标头-这是我刚才没有工作的:

const auth = new Buffer('username : <SECRETKEYHERE>');
const token = auth.toString('base64');
const authHeader = 'Basic ' + token;


fetch('https://example.com/get-token.php', {
  method: 'POST',
  headers: {
    'Authorization': authHeader,
    'Content-Type': 'application/json'
 },
}).then((response) => response.text())
.then((responseText) => {
  alert(responseText);
  console.log(responseText);
})

(注意:上面的base64转换符合预期,并返回正确的base64键,所以这不是问题)

但是,如果我将base64密钥直接放入授权标头,则请求按预期工作:

fetch('https://example.com/get-token.php', {
  method: 'POST',
  headers: {
    'Authorization': 'Basic <BASE64KEYHERE>',
    'Content-Type': 'application/json'
 },
}).then((response) => response.text())
.then((responseText) => {
  alert(responseText);
  console.log(responseText);
})

我搜索了SO,尝试了各种解决方案,但运气不好,主要的我已经看过了:

在React Native中使用带有Fetch的授权标头

React native-FETCH-授权标头不起作用

如果有人能帮助我或指出正确的方向,我将不胜感激,因为我花了相当多的时间试图让它毫无乐趣地工作。


共1个答案

匿名用户

基本身份验证头HTTP格式通常为

Authorization:Basic <Base64EncodedAuthString>

那里

Base64EncodedAuthString:=<username>:<password>

所以我想知道你结肠前后的空白

const auth = new Buffer('username : <SECRETKEYHERE>');

,不应该是

const auth = new Buffer('username:<SECRETKEYHERE>');

而不是?

另见https://www.rfc-editor.org/rfc/rfc7617#page-5