Indiferent ce încerc, primesc „App Transport Security a blocat încărcarea unei resurse HTTP în clar (http://) deoarece este nesigură”. (Programare, Ios, Http, Ssl, Alamofire)

Waffles a intrebat.

Încerc să fac o cerere alamofire GET către site-ul meu personal, dar nu am încă ssl. Am încercat să adaug următoarele linii de cod la info.plist și ÎNCĂ nu am avut noroc:

1) dezactivarea completă a acestuia

<key>NSAppTransportSecurity</key>
<dict>
 <!--Include to allow all connections (DANGER)-->
  <key>NSAllowsArbitraryLoads</key>
      <true/>
</dict>

2) permițând url-ul meu personal

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSExceptionDomains</key>
  <dict>
    <key>yourserver.com</key>
    <dict>
      <!--Include to allow subdomains-->
      <key>NSIncludesSubdomains</key>
      <true/>
      <!--Include to allow HTTP requests-->
      <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
      <true/>
      <!--Include to specify minimum TLS version-->
      <key>NSTemporaryExceptionMinimumTLSVersion</key>
      <string>TLSv1.1</string>
    </dict>
  </dict>
</dict>

dar continui să primesc aceeași eroare…

2016-03-19 13:02:07.770 appName[51705:9917289] App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.
[Request]: <NSMutableURLRequest: 0x7fcc92032140> { URL: http://www.myurl.com/sup?geoSearchWord=test }
[Response]: nil
[Data]: 0 bytes
[Result]: FAILURE: Error Domain=NSURLErrorDomain Code=-1022 "The resource could not be loaded because the App Transport Security policy requires the use of a secure connection." 

3 răspunsuri
Jelly

Prima soluție ar trebui să funcționeze. Asigură-te că ai pus acel cod în Info.plist sub primul <dict> tag. De asemenea, asigurați-vă că plistul pe care îl modificați este cel utilizat în setările proiectului Build settings -> Info.plist file.

Comentarii

  • Adică, cred că este în locul potrivit. Este singurul info.plist din director. De fapt, știți ce, când mă uit prin „Build Settings”, nu văd o categorie care să spună info.plist. Dar cu siguranță am pus etichetele în locul potrivit în interiorul fișierului. Pentru că văd că se face modificarea în xcode. Este în Information Property List -> App Transport Security Settings -> Allow Arbitrary Loads (boolean YES). mai pot face ceva sau pot efectua un test pentru a mă asigura că citește fișierul? –  > Por Waffles.
  • Știi ce. pun pariu că fișierul Info.plist nici măcar nu este citit corect. A trebuit să copiez și să lipesc o mulțime de fișiere peste din cauza unei probleme cu o copie de rezervă. Deci… cred că… cum fac un nou info.plist, pot să pun xcode să genereze unul? –  > Por Waffles.
  • Puteți face un nou plist făcând clic dreapta pe dosarul rădăcină și new file -> resources dar acesta va fi gol. Puteți crea un nou proiect și să-l copiați de acolo, dar dacă îl puteți vedea ca listă de proprietăți nu doar ca XML, probabil că fișierul este corect. Ar trebui să introduceți numele fișierului dvs. plist în Build settings->Packaging->Info.plist File –  > Por Jelly.
  • mulțumesc că ați adăugat indicatorul corect la Info.plist, am rămas blocat cu această problemă de mult timp, de obicei, începătorul se blochează –  > Por KOTIOS.
  • Dacă altcineva se mai aduce aici, am încercat toate acestea cu nu funcționează. În cele din urmă am închis VS, am eliminat aplicația de pe dispozitiv și am redeschis și a funcționat. Nu știu de ce, dar cumva poate că info.plist este reținut. Folosind VS pe PC pentru dev conectat la dispozitivul iPhone prin intermediul Mac, astfel încât, probabil, nu este trimis pe Mac fără închidere completă și repornire. –  > Por Brian.S.
Mostafa ElShazly

Swift 5.2:Trebuie să adăugați un dicționar la info.plist numit „App Transport Security Settings” și în el adăugați o cheie numită „Allow Arbitrary Loads” cu valoarea „YES”, astfel:

Comentarii

  • Pur și simplu nu funcționează, nu știu de ce. Dar făcând același lucru de ceva vreme, a funcționat înainte. –  > Por Fay007.
Dayclone

Trebuie să setați NSAllowsArbitraryLoads la YES sub NSAppTransportSecurity dicționar în fișierul .plist.