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 |
සෑම පේළියක්ම ඊට පහළ එකට වඩා ලාභදායී ලෙස පරීක්ෂා කළ හැකි අතර, එක් එක් එකම ඉල්ලීමේ වෙනස් ස්ථරයක් බැහැර කරයි. පේළියක් ගැළපෙන තෙක් වගුව පහළට යන්න, පසුව ජාලය වෙනස් කිරීම නවත්වන්න.