将令牌传递给React Native中的Authorization标头

时间:2019-11-30 15:31:56

标签: react-native expo

我对本地人反应还很新,所以请保持谦逊:)

我需要将令牌传递到授权标头-这就是我刚才无法使用的内容:

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,没有运气就尝试了各种解决方案,主要的解决方案我已经看过了:

Using an authorization header with Fetch in React Native

React native - FETCH - Authorization header not working

如果有人能帮助我或指出正确的方向,我将不胜感激,因为我花了很多时间试图使它正常工作。

1 个答案:

答案 0 :(得分:1)

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

Authorization:Basic <Base64EncodedAuthString>

其中

Base64EncodedAuthString:=<username>:<password>

所以我想知道结肠中的空白

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

,不是吗

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

相反?

另请参阅https://tools.ietf.org/html/rfc7617#page-5