2015-10-09 17 views
5

Próbuję uzyskać moją aplikację, aby połączyć się z serwerem http pod adresem 152.111.198.244 za pośrednictwem usługi Apple Transport Security. I nic, co próbuję, nie działa.NSAllowsArbitraryLoads nie działa dla adresu IP

Dodawanie klucza NSAllowsArbitraryLoads do pliku Info.plist mojego projektu nadal nie pozwalają moja aplikacja do łączenia się z tym konkretnym 152.111.198.244 adresu IP I już przez technote na Apple Transportu Security. Zainstalowałem OSX 10.11, aby spróbować znaleźć to, co może pracować dla ustawienia adresu URL przy użyciu

nscurl --ats-diagnostics http://152.111.198.244 

i

nscurl --ats-diagnostics http://152.111.198.244/publications/ 

w terminalu. Wszystkie ustawienia, których próba nscurl kończy się niepowodzeniem. Spojrzałem na podobne pytania NSAllowsArbitraryLoads not working i NSExceptionAllowsInsecureHTTPLoads not working for ip addresses i nie znalazłem rozwiązania. Również wyglądał here i proponowany tam klucz NSExceptionMinimumTLSVersion nie działa.

Zaczynam myśleć, że może być gdzieś błąd lub coś, co przeoczyłem. Czy adresy IP są problemem w przypadku Apple Transport Security? Czemu? Czy istnieje sposób, aby adres IP działał przez ATS?

AKTUALIZACJA: Dodałem adres IP, który sprawia mi kłopoty. Mam nadzieję, że ktoś będzie mógł powielić to, o czym mówię.

AKTUALIZACJA: Zalogowałem się jako błąd w radarze i otrzymałem komunikat, że jest duplikatem. W międzyczasie adres IP wymieniony w tym pytaniu ma teraz nazwę domeny http://3d.media24.com/, ale niestety nie rozwiązał problemu.

AKTUALIZACJA: Zaznaczam odpowiedź jako poprawną. Wygląda na to, że Apple naprawił to za pomocą XCode7.1 i że klucze dla Apple Transport Security nieco się zmieniły. Ta strona została również zaktualizowana pod kątem połączeń https.

+1

Nie wiem dokładnie, ale spróbuj dodać nsexceptiondomains iw tym swój adres IP, a następnie w tym zestaw NSExceptionRequiresForwardSecrecy na NO, usuń arbitraryloads wpis w plist. –

+0

Dobry pomysł. Próbowałem tego teraz, to nie działało. –

Odpowiedz

1

byłem w stanie uzyskać dostęp do adresu URL, http://152.111.198.244, używając 'umożliwić wykonanie wybranego ciężarów' w moim Info.plist pod Xcode 7.1 i Simulator 9.1:

  • App transportowe Ustawienia zabezpieczeń: Słownik
    • Pozostawić dowolne Ładunki: logiczna = TAK

ekranu:

enter image description here

Użyłem poniższy kod:

let url = NSURL(string: "http://152.111.198.244")! 
let task = NSURLSession.sharedSession().dataTaskWithURL(url) {(data, response, error) -> Void in 
    print("response \(response!)") 
} 
task.resume() 

Oto odpowiedzi, które otrzymałem:

response <NSHTTPURLResponse: 0x7fe1a2421f80> { URL: http://152.111.198.244/auth/login } { status code: 200, headers { 
    "Cache-Control" = "no-cache"; 
    Connection = "Keep-Alive"; 
    "Content-Encoding" = gzip; 
    "Content-Length" = 1138; 
    "Content-Type" = "text/html; charset=UTF-8"; 
    Date = "Fri, 23 Oct 2015 09:33:59 GMT"; 
    "Keep-Alive" = "timeout=5, max=98"; 
    Server = "Apache/2.4.7 (Ubuntu)"; 
    "Set-Cookie" = "XSRF-TOKEN=eyJpdiI6IldBOWYxcDk3SEtMekJ3YTNSUm9mYUE9PSIsInZhbHVlIjoiTFBcL3RGWW10cjlONFFkeXY1ZDA4SWRkSURIYlFsOGE3QkFEV3hRNTVwRFJuWSt5SXN3OU55Sng4elduMHd1T1duV0VFQ1o4dDVjeDJTZGRFeXJxMjN3PT0iLCJtYWMiOiJiZjNmOTg0NTZmY2RkMGQzNmE2YWEyNjJiNzA1MDlmZjIwM2M3NWYyNjYwZjM5N2Q3ZTgxNjRjNzAzMGYzYmMzIn0%3D; expires=Fri, 23-Oct-2015 11:33:59 GMT; Max-Age=7200; path=/, laravel_session=eyJpdiI6InR5OSs3cmpObVRBbFhORnVJQjRvWFE9PSIsInZhbHVlIjoiSTJ2bk41RVVLZUR1a0xKbFwvalZXQWpsNEtWeHppUVpYVUlRM1ZjQXc5aDJxT1wvXC9uYkViaTQ0SCtGNTMrdmtiQXFOd0VJTFwvM0ZCbmFHZk5MWlwvZ3BBUT09IiwibWFjIjoiYjRmNzcxY2Q5NDFlZjYzZTI1YzU2YzI0YTkxM2M0NDg0MGY2YThiODIxOGZjOTgxYjNmM2FlZTkzZGMyZTdjOCJ9; expires=Fri, 23-Oct-2015 11:33:59 GMT; Max-Age=7200; path=/; httponly"; 
    Vary = "Accept-Encoding"; 
    "X-Powered-By" = "PHP/5.5.9-1ubuntu4.11"; 
} } 

Byłem również w stanie połączyć się przy użyciu nazwanego do Domena3d .media24.com, ale nie numeryczny adres 152.111.198.244 używający domen wyjątków.

Zrzut ekranu:

enter image description here

Moje wyniki zgadzają się z definicją dla domen wyjątek w Apple Technote on App Transport Security:

słownika wyjątków na nazwie domeny. Nazwa klucza to nazwa domeny - na przykład www.apple.com.

+1

NSAllowsArbitraryLoads: YES -> Myślę, że ta linia wykonuje lewę, a nie domeny wyjątków. Jeśli usuniesz NSAllowsArbitraryLoads, domeny wyjątków nie będą działać. –

+0

Gdy NSAllowsArbitraryLoads ma wartość YES, zezwala na wszystkie domeny, a nie tylko te wymienione w domenach wyjątków. Czy mam rację? –

+1

@RamarajT: Tak, masz rację. – Daniel

0

kilka przydatnych dziedzin mogą być dodawane poniżej App Settings Bezpieczeństwa Transportu:

NSIncludesSubdomains 

NSExceptionAllowInsecureHTTPLoads 

NSExceptionRequiresForwardSecrecy 

NSExceptionMinimumTLSVersion 

NSThirdPartyExceptionAllowsInsecureHTTPLoads 

NSThirdPartyExceptionMinimumTLSVersion 

NSThirdPartyExceptionRequiresForwardSecrecy 

Wizyta https://github.com/ChenYilong/iOS9AdaptationTips#1-demo1_ios9%E7%BD%91%E7%BB%9C%E9%80%82%E9%85%8D_ats%E6%94%B9%E7%94%A8%E6%9B%B4%E5%AE%89%E5%85%A8%E7%9A%84https więcej użytkowania.

Hope jest pomocna!

Powiązane problemy