React-本机获取和基本身份验证

wmomyfyw  于 2023-03-19  发布在  React
关注(0)|答案(4)|浏览(149)

我试着用下面的语法来使用fetch:

fetch("https://user:password@url", {
   ...
}).then((response) => {
   ...
}).done();

相同的url在CURL中有效,但在React Native中返回401。
有什么想法吗?
谢谢,保罗

dohp0rv5

dohp0rv51#

我发现这种格式https://user:password@url在CURL和节点中工作得很好,但在fetch中就不行了。
我必须使用base-64 npm模块并通过一个Headers对象。

// https://www.npmjs.com/package/base-64
const base64 = require('base-64');

...

var headers = new Headers();
headers.append("Authorization", "Basic " + base64.encode("user:password"));

fetch("https://url", {
    headers: headers
  })
  .then((response) => { ... })
  .done();
`
deikduxw

deikduxw2#

您可以使用btoa()而不是使用base_64模块。btoa()Window上的函数。

w6lpcovy

w6lpcovy3#

获取React Native移动的应用程序的授权请求,我花了更多时间在fetch中搜索这些行

var base64 = require("base-64"); // install it before use from npm i base-64

 const uname = "some username goes here";
 const pword = "some password goes here";

const getMovies = async () => {
   try {
     const response = await fetch(
       "API URL goes here",
       {
         headers: {
           Authorization: "Basic " + base64.encode(uname + ":" + pword),
         },
       }
     );

     data = await response.json();
     setData(data);

     console.log(data);
     // console.log(data.name);
     return data;
   } catch (error) {
     console.error(error);
   } finally {
     setLoading(false);
   }
 };

 useEffect(() => {
   getMovies();
 }, []);

// other code 

// inside return
  <FlatList
           keyExtractor={(item) => item.id}
           data={data}
           renderItem={({ item }) => (
             <View style={styles.text_container}>
               <Text>{item.name}</Text>
               <Text>{item.images[0].name}</Text>
               <Text>{item.images[0].src}</Text>
             </View>
           )}
         />
xfb7svmp

xfb7svmp4#

在React Native中没有其他导入:

const Buffer = require("buffer").Buffer;

const credential = "Basic " + Buffer.from(email + ":" + password).toString("base64");

fetch(url, {
      headers: {
        Authorization: credential,
      }
    })

相关问题