React-native загрузка изображения через https работает, а http не работает

Я хочу загрузить изображение в симулятор iOS через http uri в качестве источника. Но на экране ничего не отображается, кроме каркаса, который можно сделать видимым с помощью инспектора. Если вы загружаете тот же код в Android, он работает нормально, и если вы используете https uri вместо http, он также работает нормально.

Пример кода:

render() { 
  return ( 
   <View> 
     <Image 
       source={{uri:https://facebook.github.io/react/img/logo_og.png'}} // works  
    // source={{uri: http://facebook.github.io/react/img/logo_og.png'}}  // doesn't work
       style={{width: 400, height: 400}}   
     />   
  </View>  
 );  
}

person Orlando    schedule 01.07.2016    source источник


Ответы (2)


Проблема в том, что вы пытаетесь загрузить изображение из http-соединения, а не из https-соединения, как того требует Apple. Попробуйте, если ваш код работает с другим uri, который использует https вместо http. В Android он должен нормально работать как с http, так и с https. Подробнее читайте на https://github.com/facebook/react-native/issues/8520 и http://www.techrepublic.com/article/wwdc-2016-apple-to-require-https-encryption-on-all-ios-apps-by-2017/.

Если вы действительно хотите загрузить что-то через http, вы можете отредактировать файл info.plist и добавить туда свое исключение. Более подробная информация здесь https://ste.vn/2015/06/10/configuring-app-transport-security-ios-9-osx-10-11/

person Orlando    schedule 01.07.2016

добавить в info.plist

<key>NSAppTransportSecurity</key>
 <dict>
 <!--Include to allow all connections (DANGER)-->
    <key>NSAllowsArbitraryLoads</key>
    <true/>
 </dict>
person Milon    schedule 25.10.2017
comment
У меня на ios работает, а на android? - person jose920405; 31.05.2019