د VPN له لارې د iPhone ایپ څخه داخلي API ته څنګه زنګ ووهو
د تونل له لمس کولو مخکې ناکامه غوښتنه د هغې د NSURLError کوډ له مخې طبقهبندي کړئ، بیا هغه پوړ چې واقعاً مات شوی سم کړئ.
API په همدې تلیفون کې په Safari کې ځواب ورکوي، خو د ایپ غوښتنه د وخت پای ته رسېږي. دا توپیر معمولاً تونل نه وي: هغه ایپ چې داخلي خدمت ته زنګ وهي، عادي HTTPS غوښتنه کوي، او په وسیله کې شته VPN یوازې دا فیصله کوي چې آیا هغه غوښتنه لاره لري که نه. په ایپ کې دوهم تونل لیکل د محصول پرېکړه ده، نه د وخت د پای لپاره ترمیم. لاندې برخه ناکامي د هغې د پېښېدو له ځای له مخې طبقهبندي کوي، هغه د تېروتنې سطحه کاروي چې ایپ لا دمخه لري.
له تېروتنې پیل کړئ، نه له تونل
URLSession د لېږد ناکامۍ په توګه NSError ارزښتونه په NSURLErrorDomain کې راپور کوي، او کوډ تر ټولو ارزانه موجود شاهد دی. له هرې ترتیباتو بدلولو مخکې هغه کوډ د ناکام هوسټ نوم او د کار تېر وخت سره ثبت کړئ. د وخت پای، د نوم ناکامي او د باور ناکامي په سکرین کې یو شان ښکاري او درې جلا ترمیمونه غواړي. لومړی طبقهبندي کړئ، بیا د هغې طبقې برخه ولولئ.
د کار اندازه کول بل پوښتنې ته ځواب ورکوي، چې آیا اړیکه کله هم جوړه شوه، دا هغه غوښتنه چې کله هم لاره نه لرله د هغې غوښتنې څخه بېلوي چې سرور ډېر ناوخته ځواب ورکړ. له دې څخه هیڅ هم تونل بدلولو ته اړتیا نه لري؛ اړتیا دا ده چې د غوښتنې خپل تشخیصونه دې داسې ځای کې چاپ شي چې تاسو یې لوستلی شئ.
د نوم حل له هر بل شي مخکې ناکامېږي
لکه api.corp.example په څېر لنډ دفتر نوم معمولاً د لټون ډومین پورې تړلی وي چې تلیفون یې نه لري، نو ایپ هغه نوم حل کوي چې یوازې د ودانۍ دننه شته. NSURLErrorCannotFindHost د هغې لاسلیک دی. بشپړ هوسټ نوم باید د هر هغه حل کوونکي له لارې حل شي چې VPN یې نصبوي، او ایپ باید بشپړ وړ بڼه وغواړي کله چې د لټون ډومین تضمین نه وي. نوم د پتې سره بدلول او د سندونو څېړنې بندول ناکامي لېږدوي، نه یې سمومي.
خصوصي DNS ریکارډ او هغه سند چې دقیقاً د همدې نوم لپاره صادر شوی، د ملاتړ شوې جوړه ده. هر بل څه یو داسې لاره ده چې کاروونکو ته رسېږي.
د وخت پای د نوم نه، د لارې پوښتنه ده
NSURLErrorTimedOut مانا دا ده چې نوم حل شو او هیچا ځواب نه ورکړ، چې لارې، د بنډل تګلارې یا خدمت ته اشاره کوي. کله چې تونل د هر ایپلیکیشن لپاره ټاکل کېږي، بل ایپ چې هماغه سرور ته رسېږي ستاسو د جوړښت په اړه هیڅ نه وایي، ځکه هغه نقشه شریکه نه ده. وګورئ چې هغه بنډل چې تاسو یې چلوئ د هغې ټاکلو دننه دی، بیا وګورئ چې د خدمت لاره د هغې لپاره اجازه لري. د ټاکلو څخه بهر نصب شوی پراختیایي جوړښت کولای شي په بشپړ ډول له تونل بهر وي او مات شوي API په څېر ښکاره شي.
د براوزر پرتله ښیي چې په وسیله کې یو څه ایپ لاره لري. دا هیڅکله نه ثابتوي چې ستاسو جوړښت یې لري، نو دواړه ازموینې باید جلا ترسره شي.
د باور ناکامۍ د سند پر نوم اړوندې دي
NSURLErrorServerCertificateUntrusted د هغې لاندې TLS تېروتنې سره یوځای مانا دا ده چې زنځیر یا د هویت څېړنه ناکامه شوه. داخلي CA باید په وسیله کې باوري وي، او هغه سند چې بل هوسټ نوم لپاره صادر شوی وي د هر ډول شبکې بیا تنظیم وروسته هم غلط پاتې کېږي. د Apple د App Transport Security لارښود لا هم په دې URL باروونکو اړیکو باندې تطبیق کېږي، او د ساده HTTP خدمت شاوخوا تونل هغه خدمت له سره تر سره خوندي نه کوي.
هویت یا د باور لنگر سم کړئ او د استثناوو لیست خالي وساتئ. د هر ډول بارولو لپاره عمومي استثنا پراختیا په جریان کې ناکامي پټوي او بیا یې هر کاروونکي لپاره په خپل ځای پرېږدي.
د HTTP رد د ایپ دی، نه د شبکې
د بشپړ شوي لاس نیول وروسته 401 یا 403 مانا دا ده چې غوښتنه ورسېده او خدمت رد کړه، نو پاتې پوښتنه حساب، د ټوکن اورېدونکي، دایره یا کیلي ده. د حالت کوډ او هوسټ نوم ثبت کړئ، هیڅکله د وړونکي ټوکن یا ځواب بدن نه. په هغه وخت کې تونل خپله دنده کوي او نور شبکې بدلونونه یوازې ریښتینی سمون ځنډوي.
جدول هغه طبقهبندي ده چې د ټرمینل تر څنګ یې وساتئ: د هرې هغې ناکامۍ لپاره یوه کرښه چې ایپ واقعاً راپور ورکولای شي. کوډ د لوستلو مخکې چاپ کړئ، ځکه هغه کرښه چې تاسو غوره کوئ پریکړه کوي چې کومه برخه کاروئ.
| Where it fails | What the app sees | First check |
|---|---|---|
| name resolution | NSURLErrorCannotFindHost (-1003) | resolve the fully qualified name from the device itself |
| no path, or no answer | NSURLErrorTimedOut (-1001) | is this bundle inside the per-app mapping, and is the service path allowed |
| TLS trust | NSURLErrorServerCertificateUntrusted (-1202) | does the certificate name match the host, and is the internal CA trusted |
| service refusal | HTTP 401 or 403 after a completed handshake | account, token audience, scope or key |
هره کرښه د هغې لاندې کرښې څخه ارزانه ازمویل کېږي، او هر یو یې د هماغې غوښتنې بېل پوړ بېلوي. په جدول کې ښکته لاړ شئ تر څو یوه کرښه سمه راشي، بیا شبکه بدلول ودروئ.