উত্তর:
আইওএস 9-র জন্য অ্যাপল আইওএস 9 এর সাথে একটি মূল সিদ্ধান্ত নিয়েছে, অ্যাপ ট্রান্সপোর্ট সিকিউরিটির (এটিএস) অংশ হিসাবে আইওএস অ্যাপ্লিকেশনগুলি থেকে সমস্ত অনিরাপদ এইচটিটিপি ট্র্যাফিক অক্ষম করে ।
কেবল এটিএস অক্ষম করার জন্য, আপনি এই তথ্যগুলি খুলুন তথ্য.পল্লিস্ট দ্বারা অনুসরণ করতে পারেন এবং নিম্নলিখিত লাইনগুলি যুক্ত করতে পারেন:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
স্বেচ্ছাসেবী লোডগুলি ( NSAllowsArbitraryLoads = true
) মঞ্জুরি দেওয়া একটি ভাল কাজ করার পরেও , আপনাকে পুরোপুরি এটিএস অক্ষম করা উচিত নয় বরং আপনি যে HTTP সংযোগটি মঞ্জুর করতে চান তা সক্ষম করতে হবে:
<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>
আইওএস 9 এমন সংযোগগুলিকে জোর করে যা এইচটিটিপিএসকে TLS 1.2 হিসাবে সাম্প্রতিক দুর্বলতাগুলি এড়াতে ব্যবহার করে। আইওএস 8-তে এমনকি এনক্রিপ্ট করা এইচটিটিপি সংযোগগুলি সমর্থিত ছিল, যাতে টিএলএস-এর পুরানো সংস্করণগুলি কোনও সমস্যা না করে। কার্যবিহীন হিসাবে, আপনি এই কোড স্নিপেটটি আপনার তথ্য.প্লাইতে যোগ করতে পারেন:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
আপনি যদি সুনির্দিষ্ট ডোমেইনগুলিকে লক্ষ্য করে থাকেন তবে আপনি এটিকে আপনার অ্যাপ্লিকেশনটির তথ্য.পল্লিস্টে চেষ্টা করে যোগ করতে পারেন:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>example.com</key>
<dict>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
</dict>
</dict>
দেখা যাচ্ছে যে আইওএস 9.0.2 বৈধ এইচটিটিপিএস শেষ পয়েন্টগুলির অনুরোধগুলি ভঙ্গ করে। আমার বর্তমান সন্দেহ এটি SHA-256 শংসাপত্রের প্রয়োজন হয় বা এটি এই ত্রুটির সাথে ব্যর্থ হয়।
পুনরুত্পাদন করতে, সাফারির সাথে আপনার ইউআইবিউবভিউ পরিদর্শন করুন এবং একটি স্বেচ্ছাসেবী এইচটিটিপিএস শেষ পয়েন্টে নেভিগেট করার চেষ্টা করুন:
location.href = "https://d37gvrvc0wt4s1.cloudfront.net/js/v1.4/rollbar.min.js"
// [Error] Failed to load resource: An SSL error has occurred and a secure connection to the server cannot be made. (rollbar.min.js, line 0)
এখন গুগলে যাবার চেষ্টা করুন (কারণ তাদের কাছে একটি SHA-256 সার্টি রয়েছে):
location.href = "https://google.com"
// no problemo
পরিবহন সুরক্ষার ক্ষেত্রে একটি ব্যতিক্রম যুক্ত করা (উপরে @ স্টাফেন-ব্রুকার্টের উত্তর দ্বারা বর্ণিত) এটিকে সংশোধন করতে কাজ করে। আমি এটিও ধরে নিয়েছি যে সম্পূর্ণরূপে অক্ষম করাও NSAppTransportSecurity
খুব কার্যকর হবে, যদিও আমি পড়েছি যে এটি সম্পূর্ণরূপে অক্ষম করা আপনার অ্যাপ্লিকেশন পর্যালোচনাকে বিপন্ন করতে পারে।
[সম্পাদনা] আমি খুঁজে পেয়েছি যে NSExceptionDomains
ডিকের সাথে আমি যে ডোমেনগুলির সাথে সংযোগ করছি তার গণ্যকরণ সঠিকভাবে ছেড়ে যাওয়ার পরেও এই সমস্যাটি সংশোধন করে NSExceptionAllowsInsecureHTTPLoads
। : \
সমস্যাটি হ'ল সার্ভারের পাশের এসএসএল শংসাপত্র। হয় কিছু হস্তক্ষেপ করছে বা শংসাপত্রটি পরিষেবার সাথে মেলে না। উদাহরণস্বরূপ যখন কোনও সাইটের www.mydomain.com এর জন্য এসএসএল শংসাপত্র রয়েছে যখন আপনি যে পরিষেবাটি ব্যবহার করেন সেটি myservice.mydomain.com এ চলে। এটি একটি ভিন্ন মেশিন।
আমি যখন আমার এইচটিটিপিএস ইউআরএলটি হিসাবে নির্দিষ্ট করি তখন আমি একই ত্রুটি পাই: https://www.mywebsite.com । তবে তিনটি ডাব্লু এর যেমন: https://mywebsite.com ব্যতীত আমি এটি নির্দিষ্ট করে দিলে এটি ঠিক কাজ করে ।
এক্সকোড প্রকল্প -> গোটো ইনফো.লিস্ট এবং + বাটন ক্লিক করুন তারপরে অ্যাড করুন (অ্যাপ ট্রান্সপোর্ট সিকিউরিটি সেটিংস) প্রসারিত করুন, স্বেচ্ছাসেবী লোড সেট করুন হ্যাঁ অনুমতি দিন। ধন্যবাদ
আমার সমস্যাটি ছিল NSURLConnection
এবং এটি iOS9 এ অবমূল্যায়ন করা হয়েছিল তাই আমি সমস্ত API এ পরিবর্তন করেছি NSURLSession
এবং এটি আমার সমস্যার সমাধান করে।
আমার ক্ষেত্রে আমি এই সমস্যাটি আমার সিমুলেটরটিতে ফেলেছিলাম কারণ আমার কম্পিউটারের তারিখটি বর্তমান তারিখের পিছনে ছিল। আপনি যখন এসএসএল ত্রুটির মুখোমুখি হন তখনও এই কেসটি পরীক্ষা করে দেখুন।
আমি প্লেব্যাক নেভিগেশন ত্রুটি পেয়েছিলাম
finished with error [-1200] Error Domain=NSURLErrorDomain Code=-1200 "An SSL error has occurred and a secure connection to the server cannot be made." UserInfo={NSErrorFailingURLStringKey=https://remote-abcabc-svc.an.abc.com:1935/abr/_definst_/smil:v2/video/492F2F82592F59EA74ABAA6B9D6E6F42/F6B1BD452132329FBACD32730862CAE0/091EAD80FE9BEDD52A2F33840CA3CBAC.v3.eng.smil/playlist.m3u8, NSLocalizedRecoverySuggestion=Would you like to connect to the server anyway?, _kCFStreamErrorDomainKey=3, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <692A1174-DA1C-4267-9560-9020A79F8458>.<1>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalDataTask <692A1174-DA1C-4267-9560-9020A79F8458>
আমি নিশ্চিত হয়েছি যে আমি প্লিস্ট ফাইলে ব্যতিক্রম ডোমেনগুলিতে এন্ট্রি যুক্ত করেছি এবং এনএসআল্লোআরবিটরিলডগুলি সত্যতে সেট করা আছে এবং এখনও আমি একটি ত্রুটি দেখছিলাম।
তারপরে আমি বুঝতে পারলাম যে আমি ইউআরএলটি https- র সাথে খেলছি, HTTP নয়।
আমি http এবং ভিডিওর সমাধানের জন্য ভিডিও url সেট করেছি।