首頁  >  文章  >  web前端  >  uniapp雲端打包無法要求網絡

uniapp雲端打包無法要求網絡

WBOY
WBOY原創
2023-05-22 09:14:361408瀏覽

作為跨平台開發的利器,uniapp在開發過程中有著許多便利之處,但在進行雲端打包時,我們可能會遭遇要求網路時出現的問題。

最近在uniapp開發過程中,我使用了uniCloud的雲端函數,以及聚合資料的API接口,但在雲端打包時卻遇到了無法請求網路的問題,一度讓我苦惱不已。

經過多次測試和查詢相關文檔,我發現這是由於uniapp雲打包默認開啟沙箱模式導致的,而​​在沙箱模式下,網絡請求處於限制狀態,無法請求到外部網絡。

那麼,接下來我將為大家詳細介紹如何解決uniapp雲端打包無法要求網路的問題。

解決uniapp雲端打包無法要求網路的問題

方案一:開啟非沙箱模式

在雲端打包之前,我們需要修改包裝配置,將uniapp的沙箱模式關閉,這樣就可以解決雲端打包無法請求網路的問題。我們在manifest.json檔案中加入以下程式碼:

"app-plus":{
    "sandbox":false
}

如上述程式碼所示,我們需要在app-plus節點中新增sandbox配置,將其設定為false即可開啟非沙箱模式。

但要注意的是,開啟非沙箱模式會有一定的安全風險,因此在應用場景非常必要的情況下才進行操作。

方案二:新增網路白名單

另一個解決方案是,新增網路白名單,允許應用程式存取外部網路。我們可以在manifest.json檔案中,透過新增以下程式碼來實現:

"app-plus":{
    "networkTimeout":{
        "request":30000,
        "connectSocket":30000,
        "uploadFile":30000,
        "downloadFile":30000
    },
    "debug":false,
    "subpackages":[],
    "permission":{
        "scope.userLocation":{
            "desc":"你的位置信息将用于小程序位置接口的效果展示"
        }
    },
    "navigateToMiniProgramAppIdList":[],
    "preloadRule":{
        "page":{
            "alias":[],
            "path":[]
        },
        "network":{
            "include":[
                "**/**/*.png",
                "**/**/*.jpg",
                "**/**/*.jpeg",
                "**/**/*.gif",
                "**/**/*.svg",
                "**/**/*.js",
                "**/**/*.css",
                "**/**/*.wxss",
                "**/**/*.wxml"
            ],
            "exclude":[]
        },
        "package":{
            "exclude":[],
            "include":[]
        },
        "plugin":{
            "exclude":[],
            "include":[]
        }
    },
    "navigateToKeepAliveList":[],
    "subscribeMessage":{
        "tmplIds":[]
    },
    "usingComponents":{},
    "sandbox":false,
    "style":{
        "navigationBarTitleText":""
    },
    "window":{
        "navigationBarBackgroundColor":"#fff",
        "navigationBarTextStyle":"black",
        "navigationBarTitleText":"uni-app",
        "backgroundColor":"#F5F5F5",
        "backgroundTextStyle":"light",
        "enablePullDownRefresh":false,
        "enableBackToTop":false,
        "navigationStyle":"default"
    },
    "networkTimeout":{
        "request":10000,
        "connectSocket":10000,
        "uploadFile":10000,
        "downloadFile":10000
    },
    "networkSecurity":{
        "sslPinning":true
    },
    "navigateToMiniProgram":{
        "appParam":{
            "xxParam":"yy"
        }
    },
    "plugins":{
        "myPlugin":{
            "version":"*",
            "provider":"wxidxxxxxxxxxxxxxxxxx"
        }
    },
    "cloud":{
        "functionUrl":"https://api.xxx.com"
    },
    "requiredBackgroundModes":["audio"]
},
"networkTimeout":{
    "request":10000,
    "connectSocket":10000,
    "uploadFile":10000,
    "downloadFile":10000
},
"networkSecurity":{
    "sslPinning":true
},
"navigateToMiniProgram":{
    "appParam":{
        "xxParam":"yy"
    }
},
"plugins":{
    "myPlugin":{
        "version":"*",
        "provider":"wxidxxxxxxxxxxxxxxxxx"
    }
},
"cloud":{
    "functionUrl":"https://api.xxx.com"
},
"requiredBackgroundModes":["audio"]
}

具體來說,我們需要在app-plus節點下新增以下配置:

"networkSecurity":{
    "sslPinning":true
},
"cloud":{
    "functionUrl":"https://api.xxx.com"
}

以上程式碼中,networkSecurity節點中的sslPinning屬性用於確保網路請求的安全性,而cloud節點的functionUrl屬性則為我們的應用程式新增了網路請求白名單,允許我們的應用程式存取API介面。

至此,我們已經成功解決了uniapp雲端打包無法請求網路的問題,如果你也遇到了類似的困擾,希望這篇文章能對你有所幫助。

以上是uniapp雲端打包無法要求網絡的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn