2015-07-02 17 views
38

Bir iOS uygulamasını iOS 9'a yükseltebilirim ve güvenli olmayan bazı URL'lere sahibim ve Uygulama Aktarım Güvenliği'ne birkaç istisna ihtiyacım var. Ben Bilmem ikisini ekledik ama şimdi belirten oluyor bazı uyarılar vardır: o güvensiz olduğundan kaynak yükü:App Transport Security tarafından hangi URL'nin engellendiğini nasıl anlarım?

Uygulama Taşıma Güvenliği bir cleartext HTTP (// http) engelledi. Geçici istisnalar, uygulamanızın Info.plist dosyasıyla yapılandırılabilir.

Hangi URL'lerin engellendiğini bilmem gerekiyor, böylece onları Info.plist'e ekleyebilirim, muhtemelen resim veya medya dosyaları. Sistemin yüklememeye karar verdiği URL'leri nasıl kaydedebilirim?

cevap

63

Editör Notu: Bu nasıl yapılacağına ilişkin resmi Apple belgelerine linke aşağıdaki yorum işaret @jessedc: https://developer.apple.com/library/content/qa/qa1887/_index.html

Tamam, ben sevmiyorum bir cevap var! Hala çok daha iyi bir tane istiyorum. Benim application:didFinishLaunchingWithOptions: yöntemde

ben sonra uygulamayı çalıştırdığınızda

setenv("CFNETWORK_DIAGNOSTICS", "3", 1); 

, günlükte Şöyle bir girdi bulabilirsiniz satırı eklendi:

2015-07-02 15:27:56.152 MyApp[45041:9125662] CFNetwork diagnostics log file 
created at: /Users/micah.hainline/Library/Developer/CoreSimulator/Devices/ 
11BCA581-5F5F-494D-932A-2ECFCA33EA93/data/Containers/Data/Application/ 
9ACC6941-8039-4B86-B5E8-A6C66E2AD520/Library/Logs/CrashReporter/CFNetwork_com 
.myapp.MyApp_45041.nwlrb.log 

Bunu açmak file Ağda olan her şey hakkında çok sayıda günlük girişi var. Bu dosyada kCFErrorDomainCFNetwork için arama yaptım ve başarısız ağ istekleri için günlükleri aldım. Sistemin hangi URL'leri vurmaya çalıştığını görmek için kullanabilir ve ardından bu URL'yi Uygulama Aktarım Güvenliği'nin istisnalarına ekleyebilirim.

+4

Başka hiçbir şey yapmıyorsanız yaratıcılığa çarpmak :) –

+0

URL bağlantınız veya veri göreviniz bir hatayla tamamlandığında hata geri çağırma işlemi yapmıyor musunuz? Öyleyse, IIRC, NSError nesnesinde, neden HSTS nedeniyle başarısız olup olmadığı da dahil olmak üzere neden reddedildiğini gösteren bir bilgi vardır. – dgatwood

+1

Bu çözüm için teşekkür ederiz. Keşke, Apple'ın her seferinde böyle bir anda bir kırılma noktası koymamıza izin verecek bir yol olsaydı. – bugloaf

1

Kabul edilen yanıt doğrudur, ancak bunu Xamarin iOS üzerinde yapıyorsanız, kullanmanız gerekecektir; Ayrıca

Environment.SetEnvironmentVariable("CFNETWORK_DIAGNOSTICS", "3", EnvironmentVariableTarget.Process); 

, doğru yere daha kolay bulmak için Simülatör yöneticisi gibi günlük dosyası kullanımı şey (https://github.com/tue-savvy/SimulatorManager) arıyorsanız.

+0

PaulB simülatör için mi? – Nil

İlgili konular