使用 Axios 和 Firebase 时出现 401 未经授权的错误

Posted

技术标签:

【中文标题】使用 Axios 和 Firebase 时出现 401 未经授权的错误【英文标题】:401 Unauthorized Error Using Axios and Firebase 【发布时间】:2020-11-15 20:55:24 【问题描述】:

我正在使用 firebase,我想从我的 react 应用发送数据。我安装了 Axios,然后制作了一个 Axios 组件并使用 Axios 发送数据。但是我收到了 401 未经授权的错误

purchaseContinueHandler = () => 
        const order = 
            ingredients : this.state.ingredients,
            price : this.state.totalPrice, 
            customer : 
                name : 'Usman',
                address :
                    street : 'wapda town',
                    zipcode : '54700',
                    country : 'pakistan'
                ,
                email : 'usidd@gmail.com'
            ,
            deliveryMethod : '30minutes'
         
            axios.post('/order.json',order).
            then(response => 
                console.log(response)).
                    catch(error => 
                        console.log(error)); // .json to be added for firebase
    

firebase 的安全规则如下:

  rules_version = '2';
    service cloud.firestore 
      match /databases/database/documents 
    
        // This rule allows anyone with your database reference to view, edit,
        // and delete all data in your Firestore database. It is useful for getting
        // started, but it is configured to expire after 30 days because it
        // leaves your app open to attackers. At that time, all client
        // requests to your Firestore database will be denied.
        //
        // Make sure to write security rules for your app before that time, or else
        // all client requests to your Firestore database will be denied until you Update
        // your rules
        match /document=** 
          allow read, write: if request.time < timestamp.date(2020, 8, 25);
        

    
  

【问题讨论】:

来自 API 的未经授权的错误。所以可能是您的 API 需要登录令牌或类似的东西。如果没有登录令牌,您将从 API 收到此类错误。 您的实时数据库是否有任何安全规则? @RenaudTarnec 是的,它允许所有人编辑 能否将您的安全规则代码添加到您的问题中? 谢谢。但是,这些是 Firestore 的安全规则,而不是实时数据库的安全规则(它们是两种不同的数据库服务)。您应该在 Firebase“数据库”控制台面板中,通过靠近“数据库”标题的下拉选择框切换数据库。 【参考方案1】:

您很可能对实时数据库有一些安全规则,以防止未经身份验证的用户写入数据库。您在问题中显示的是Firestore 的安全规则,而不是Realtime Database 的安全规则(它们是两种不同的数据库服务)。

【讨论】:

@usmansiddique 嗨,你有时间看答案吗?

以上是关于使用 Axios 和 Firebase 时出现 401 未经授权的错误的主要内容,如果未能解决你的问题,请参考以下文章

使用Vue js调用axios发布请求时出现CORS和网络错误

使用 Axios 上传文件时出现 JavaScript CORS 错误

检索数据时出现 Vue/Firestore/Firebase 错误

使用 getData() 从 Firebase 存储下载 jpeg 图像时出现错误 13010“对象不存在”

在 axios 中响应代码 400 时出现问题

为啥我使用 axios 获取数据时出现错误 500