2015-10-09 15 views
5

Tôi đang cố gắng tải ứng dụng của mình kết nối với máy chủ http tại 152.111.198.244 thông qua Bảo mật Giao thông của Apple. Và không có gì tôi đang cố gắng làm việc.NSAllowsArbitraryLoads không hoạt động với địa chỉ ip

Thêm khóa NSAllowsArbitraryLoads vào tệp info.plist của dự án của tôi vẫn không cho phép ứng dụng của tôi kết nối với địa chỉ IP cụ thể này 152.111.198.244 Tôi đã trải qua technote trên Apple Transport Security. Tôi đã cài đặt OSX 10.11 để thử và tìm thấy những gì các thiết lập có thể làm việc cho URL sử dụng

nscurl --ats-diagnostics http://152.111.198.244 

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

tại nhà ga. Tất cả các thiết lập mà nscurl cố gắng thất bại. Tôi đã xem các câu hỏi tương tự NSAllowsArbitraryLoads not workingNSExceptionAllowsInsecureHTTPLoads not working for ip addresses và không tìm thấy giải pháp. Tôi cũng đã xem here và khóa NSExceptionMinimumTLSVersion được đề xuất không hoạt động.

Tôi bắt đầu nghĩ rằng có thể có một lỗi ở đâu đó, hoặc điều gì đó mà tôi đã bỏ lỡ. Địa chỉ IP có phải là vấn đề với Apple Transport Security không? Tại sao? Có cách nào để làm cho một địa chỉ IP hoạt động thông qua ATS?

CẬP NHẬT: Tôi đã thêm vào địa chỉ IP cụ thể gây khó khăn cho tôi. Hy vọng rằng ai đó sẽ có thể tái tạo những gì tôi đang nói về.

CẬP NHẬT: Tôi đã đăng nhập này dưới dạng lỗi trên radar và tôi nhận được thông báo cho biết đó là bản sao. Trong khi đó, địa chỉ IP được đề cập trong câu hỏi này có tên miền là http://3d.media24.com/ nhưng tiếc là địa chỉ IP chưa giải quyết được sự cố.

CẬP NHẬT: Tôi đã đánh dấu câu trả lời là chính xác. Có vẻ như Apple đã sửa lỗi này bằng XCode7.1 và các phím cho Apple Transport Security đã thay đổi một chút. Trang web được đề cập cũng đã được cập nhật cho các kết nối https.

+1

tôi không biết chính xác nhưng hãy thử thêm nsexceptiondomains và trong địa chỉ IP của bạn, sau đó trong tập này NSExceptionRequiresForwardSecrecy thành NO, hãy loại bỏ tùy ý nhập trong plist. –

+0

Ý tưởng hay. Tôi đã thử nó ngay bây giờ, nó không hoạt động. –

Trả lời

1

tôi đã có thể truy cập vào URL đó, http://152.111.198.244, sử dụng 'Cho phép tải Arbitrary' trong Info.plist của tôi dưới Xcode 7.1 và Simulator 9.1:

  • App Giao thông vận tải Security Settings: từ điển
    • phép tải tùy ý: Boolean = YES

Ảnh chụp màn hình:

enter image description here

tôi đã sử dụng đoạn mã sau:

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() 

Dưới đây là câu trả lời mà tôi nhận được:

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"; 
} } 

Tôi cũng đã có thể kết nối bằng cách sử dụng tên miền3d .media24.com nhưng không phải là địa chỉ số 152.111.198.244 sử dụng các tên miền ngoại lệ.

Ảnh chụp màn hình:

enter image description here

kết quả của tôi đồng ý với định nghĩa cho các tên miền ngoại lệ trong Apple Technote on App Transport Security:

Một từ điển ngoại lệ cho các tên miền được đặt tên. Tên của khóa là tên miền - ví dụ: www.apple.com.

+1

NSAllowsArbitraryLoads: YES -> Tôi nghĩ, dòng này thực hiện thủ thuật, không phải là các tên miền ngoại lệ. Nếu bạn loại bỏ NSAllowsArbitraryLoads, thì các tên miền ngoại lệ sẽ không hoạt động. –

+0

Khi NSAllowsArbitraryLoads được đặt thành YES, thì nó sẽ cho phép tất cả các miền, không chỉ các tên miền được đề cập trong các tên miền ngoại lệ. Tôi có đúng không? –

+1

@RamarajT: Vâng, bạn hoàn toàn đúng về điều đó. – Daniel

0

Một số lĩnh vực hữu ích có thể được thêm vào bên dưới App Giao thông vận tải Security Settings:

NSIncludesSubdomains 

NSExceptionAllowInsecureHTTPLoads 

NSExceptionRequiresForwardSecrecy 

NSExceptionMinimumTLSVersion 

NSThirdPartyExceptionAllowsInsecureHTTPLoads 

NSThirdPartyExceptionMinimumTLSVersion 

NSThirdPartyExceptionRequiresForwardSecrecy 

Visit 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 để sử dụng hơn.

Hy vọng hữu ích cho bạn!

Các vấn đề liên quan