Jinsi ya kupiga API ya ndani kutoka kwa programu ya iPhone kupitia VPN
Ainisha ombi linaloshindwa kwa msimbo wake wa NSURLError kabla ya kugusa handaki, kisha rekebisha tabaka ambalo kwa kweli lilivunjika.
API hujibu katika Safari kwenye simu hiyo hiyo, wakati ombi la programu linaisha kwa muda. Pengo hilo kwa kawaida si handaki: programu inayoita huduma ya ndani hufanya ombi la kawaida la HTTPS, na VPN iliyopo kwenye kifaa huamua tu ikiwa ombi hilo lina njia. Kuandika handaki la pili ndani ya programu ni uamuzi wa bidhaa, si ukarabati wa muda kuisha. Yafuatayo huainisha kushindwa kulingana na mahali kunakotokea, kwa kutumia uso wa makosa ambao programu tayari inao.
Anza na kosa, si handaki
URLSession huripoti kushindwa kwa usafirishaji kama NSError thamani katika NSURLErrorDomain, na msimbo ndio ushahidi wa bei nafuu unaopatikana. Kabla ya kubadilisha usanidi wowote, andika msimbo huo pamoja na jina la mwenyeji linaloshindwa na muda uliopita wa kazi. Muda kuisha, kushindwa kwa jina na kushindwa kwa uaminifu huonekana sawa kwenye skrini na huhitaji ukarabati tatu tofauti. Ainisha kwanza, kisha soma sehemu ya darasa hilo.
Vipimo vya kazi hujibu swali linalofuata, ikiwa muunganisho uliwahi kuanzishwa, jambo ambalo hutenganisha ombi ambalo halikuwa na njia kamwe na lile ambalo seva ilichelewa sana kujibu. Hakuna kati ya haya linalohitaji handaki kubadilishwa; linahitaji uchunguzi wa ombi lenyewe kuchapishwa mahali unapoweza kusoma.
Utatuzi wa majina hushindwa kabla ya kitu kingine chochote
Jina fupi la ofisi kama api.corp.example kwa kawaida hutegemea kikoa cha utafutaji ambacho simu haina, kwa hivyo programu hutatua jina ambalo lipo ndani ya jengo tu. NSURLErrorCannotFindHost ndio sahihi. Jina kamili la mwenyeji lazima litatuliwe kupitia kitatuzi chochote ambacho VPN husakinisha, na programu inapaswa kuomba fomu iliyohitimu kikamilifu wakati kikoa cha utafutaji hakina uhakika. Kubadilisha jina kwa anwani na kuzima ukaguzi wa vyeti huhamisha kushindwa badala ya kurekebisha.
Rekodi ya DNS ya kibinafsi na cheti kilichotolewa kwa jina hilo hasa ni jozi inayotumika. Kila kitu kingine ni njia ya kuzunguka inayofika kwa watumiaji.
Muda kuisha ni swali la njia, si swali la jina
NSURLErrorTimedOut inamaanisha jina lilitatuliwa na hakuna kitu kilijibu, jambo linaloelekeza kwenye njia, sera ya pakiti au huduma. Handaki linapotengwa kwa kila programu, programu nyingine inayofikia seva hiyo hiyo haisemi chochote kuhusu build yako, kwa sababu ramani hiyo haishirikiwi. Angalia kwamba kifurushi unachokimbiza kiko ndani ya mgao huo, kisha angalia kwamba njia ya huduma inaruhusiwa kwa ajili yake. Build ya maendeleo iliyosakinishwa nje ya mgao inaweza kuwa nje kabisa ya handaki na kuonekana kama API iliyovunjika.
Ulinganisho wa kivinjari unaonyesha kwamba programu fulani kwenye kifaa ina njia. Haithibitishi kamwe kwamba build yako inayo, ndiyo sababu majaribio mawili lazima yafanywe tofauti.
Kushindwa kwa uaminifu kunahusu jina lililo kwenye cheti
NSURLErrorServerCertificateUntrusted pamoja na kosa la TLS lililo chini yake inamaanisha mnyororo au ukaguzi wa utambulisho ulishindwa. CA ya ndani lazima iaminike kwenye kifaa, na cheti kilichotolewa kwa jina lingine la mwenyeji bado si sahihi baada ya usanidi wowote wa mtandao. mwongozo wa App Transport Security wa Apple unaendelea kutumika kwa miunganisho hii inayopakia URL, na handaki karibu na huduma ya kawaida ya HTTP haifanyi huduma hiyo kuwa salama kutoka mwanzo hadi mwisho.
Rekebisha utambulisho au nanga ya uaminifu na uache orodha ya vighairi tupu. Kighairi cha jumla kwa upakiaji holela huficha kushindwa wakati wa maendeleo na kuiacha mahali pake kwa kila mtumiaji baadaye.
Kukataliwa kwa HTTP ni kwa programu, si kwa mtandao
401 au 403 baada ya kupeana mkono kumekamilika inamaanisha ombi lilifika na huduma ililikataa, kwa hivyo swali lililobaki ni akaunti, hadhira ya token, wigo au ufunguo. Andika msimbo wa hali na jina la mwenyeji, kamwe si token ya kubeba au mwili wa jibu. Wakati huo handaki linafanya kazi yake, na mabadiliko zaidi ya mtandao huchelewesha tu ukarabati halisi.
Jedwali ndio uainishaji wa kuweka kando ya terminal: mstari mmoja kwa kila kushindwa ambako programu inaweza kuripoti kweli. Chapisha msimbo kabla ya kuusoma, kwa sababu mstari unaochagua huamua sehemu unayofanyia kazi.
| 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 |
Kila mstari ni wa bei nafuu kujaribu kuliko ule wa chini yake, na kila mmoja huondoa tabaka tofauti la ombi lilo hilo. Shuka jedwali hadi mstari ulingane, kisha acha kubadilisha mtandao.