Реагировать на работу собственной сети после обновления 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, чтобы вы могли точно видеть, что не работает. Вы можете узнать больше об этом здесь.

Другие вопросы по тегам