Home  >  Article  >  Web Front-end  >  uniapp cloud packaging cannot request the network

uniapp cloud packaging cannot request the network

WBOY
WBOYOriginal
2023-05-22 09:14:361409browse

As a tool for cross-platform development, uniapp has many conveniences in the development process, but when performing cloud packaging, we may encounter problems when requesting the network.

Recently during the development of uniapp, I used uniCloud's cloud functions and API interfaces for aggregating data. However, I encountered the problem of being unable to request the network during cloud packaging, which made me very distressed.

After many tests and querying relevant documents, I found that this was caused by the sandbox mode being enabled by uniapp cloud packaging by default. In the sandbox mode, network requests are in a restricted state and cannot request to the external network.

So, next I will introduce in detail how to solve the problem of uniapp cloud packaging being unable to request the network.

Solve the problem that uniapp cloud packaging cannot request the network

Option 1: Enable non-sandbox mode

Before cloud packaging, we need to modify the packaging configuration and change the sandbox of uniapp Box mode is turned off, which can solve the problem of cloud packaging being unable to request the network. We add the following code to the manifest.json file:

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

As shown in the above code, we need to add sandbox# to the app-plus node ##Configuration, set it to false to enable non-sandbox mode.

However, it should be noted that turning on the non-sandbox mode will have certain security risks, so it should only be operated when the application scenario is very necessary.

Option 2: Add a network whitelist

Another solution is to add a network whitelist to allow applications to access external networks. We can achieve this by adding the following code in the

manifest.json file:

"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"]
}

Specifically, we need to add the following configuration under the

app-plus node :

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

In the above code, the

sslPinning attribute in the networkSecurity node is used to ensure the security of network requests, while the cloud node's # The ##functionUrl attribute adds a network request whitelist to our application, allowing our application to access the API interface. So far, we have successfully solved the problem that uniapp cloud packaging cannot request the network. If you also encounter similar troubles, I hope this article can help you.

The above is the detailed content of uniapp cloud packaging cannot request the network. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn