Реагировать на работу собственной сети после обновления xcode до 8.3.2
Внезапно, все мои приложения получают запрос Newtwork, отказавший после того, как я обновил свой xcode до 8.3.2,
Network request failed
TypeError: Network request failed
я попытался изменить значения в /ios/[projectname]/info.plist, но все равно получаю ту же ошибку, даже когда я вызываю https:// конечные точки.
<key>NSAppTransportSecurity</key>
<!--See http://ste.vn/2015/06/10/configuring-app-transport-security-ios-9-osx-10-11/ -->
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>localhost</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
шаги для воспроизведения:- $act-native init newProject && cd newProject && реагировать-родной run-ios
откройте index.ios.js и добавьте тест
<Button title="fetch" onPress={async ()=>{
const r = await fetch('http://localhost/ivf/system/settings');
console.log(r);
}}/>
<Button title="fetchs" onPress={async ()=>{
const r = await fetch('https://ivf.simpleinfroamtics.com/system/settings').catch(console.log);
console.log(r);
}}/>
нажав на обе ссылки, они оба потерпят неудачу с запросом newtwok.
я пытался использовать Xhr Instured
componentDidMount(){
<Button title="console" onPress={()=>{
console.log('log');
console.debug('debug');
console.info('info');
console.warn('warn');
}}/>
<Button title="fetch" onPress={async ()=>{
const r = await fetch('http://localhost/ivf/system/settings');
console.log(r);
}}/>
<Button title="fetchs" onPress={async ()=>{
const r = await fetch('https://ivf.simpleinfroamtics.com/system/settings').catch(console.log);
console.log(r);
}}/>
}
пока точно такая же ошибка.
как мы можем это исправить??? я уже закончил все мое приложение, и я жду, чтобы исправить это, чтобы я мог опубликовать:(
Спасибо
1 ответ
Ваше исключение допускает только небезопасные соединения с не локальным хостом. Вам нужно будет изменить его, чтобы попытаться использовать протокол http (например, " http://ivf.simpleinfroamtics.com/system/settings"). Если вы хотите подключиться через https, вам необходимо выяснить, что в URL-адресе нарушает правила ATS. Возможно, он не поддерживает TLS 1.2, не поддерживает прямую секретность или недостаточно ключа.
Чтобы проверить URL на соответствие ATS, используйте nscurl --ats-diagnostics <url>
команда на вашем Mac. Вы можете узнать больше об ATS в целом, а также о том, как использовать / интерпретировать результаты команды nscurl выше в этом посте.
Наконец, чтобы разрешить соединение с локальным хостом, вам нужно добавить NSAllowsLocalNetworking
ключ со значением true, чтобы позволить вашему приложению небезопасно подключаться к локальным сетевым ресурсам, включая localhost.
Я также рекомендовал бы повысить свой уровень CFNETWORK_DIAGNOSTICS, чтобы вы могли точно видеть, что не работает. Вы можете узнать больше об этом здесь.