>  기사  >  웹 프론트엔드  >  uniapp 클라우드 패키징이 네트워크를 요청할 수 없습니다

uniapp 클라우드 패키징이 네트워크를 요청할 수 없습니다

WBOY
WBOY원래의
2023-05-22 09:14:361490검색

크로스 플랫폼 개발을 위한 도구인 uniapp은 개발 과정에서 많은 편의성을 제공하지만, 클라우드 패키징을 수행할 때 네트워크 요청 시 문제가 발생할 수 있습니다.

최근 유니앱을 개발하면서 데이터 집계를 위해 유니클라우드의 클라우드 기능과 API인터페이스를 사용했는데, 클라우드 패키징 중에 네트워크를 요청할 수 없는 문제에 직면해서 굉장히 고민이 많았습니다.

많은 테스트와 관련 문서 쿼리 끝에 이는 uniapp 클라우드 패키징에서 기본적으로 샌드박스 모드가 켜져 있기 때문에 발생하는 것으로 나타났습니다. 샌드박스 모드에서는 네트워크 요청이 제한된 상태이므로 외부 네트워크에 요청할 수 없습니다.

그래서 다음에는 유니앱 클라우드 패키징이 네트워크를 요청할 수 없는 문제를 해결하는 방법을 자세히 소개하겠습니다.

uniapp 클라우드 패키징이 네트워크를 요청할 수 없는 문제 해결

옵션 1: 비샌드박스 모드 활성화

클라우드 패키징 전에 패키징 구성을 수정하고 uniapp의 샌드박스 모드를 꺼야 합니다. 클라우드 패키징이 네트워크 문제를 요청할 수 없는 문제. manifest.json 파일에 다음 코드를 추가합니다. 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节点的functionUrlrrreee

위 코드에 표시된 대로 app-plus에 <code>sandbox를 추가해야 합니다. code> node >Configuration에서 비샌드박스 모드를 활성화하려면 false로 설정하세요.

그러나 비샌드박스 모드를 켜면 특정 보안 위험이 있으므로 응용 시나리오가 매우 필요한 경우에만 작동해야 한다는 점에 유의해야 합니다. 🎜🎜옵션 2: 네트워크 허용 목록 추가🎜🎜또 다른 해결 방법은 애플리케이션이 외부 네트워크에 액세스할 수 있도록 네트워크 허용 목록을 추가하는 것입니다. manifest.json 파일에 다음 코드를 추가하면 이를 달성할 수 있습니다. 🎜rrreee🎜 특히 app-plus 노드 아래에 다음 구성을 추가해야 합니다. 🎜 rrreee🎜위 코드에서 networkSecurity 노드의 sslPinning 속성은 네트워크 요청의 보안을 보장하는 데 사용되며, 클라우드의 <code>functionUrl은 노드 속성은 애플리케이션에 네트워크 요청 화이트리스트를 추가하여 애플리케이션이 API 인터페이스에 액세스할 수 있도록 합니다. 🎜🎜지금까지 uniapp 클라우드 패키징이 네트워크를 요청할 수 없는 문제를 성공적으로 해결했습니다. 혹시 비슷한 문제가 발생한다면 이 글이 도움이 되기를 바랍니다. 🎜

위 내용은 uniapp 클라우드 패키징이 네트워크를 요청할 수 없습니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.