A CFNetworkCopyProxiesForURL által visszaadott PAC URL-ek kiértékelése
Alakítsa a CFNetwork automatikus proxykonfigurációjának eredményeit célspecifikus útvonalakká anélkül, hogy összetévesztené a PAC-címet a proxy végponttal.
Az alkalmazás megkérdezi a CFNetworköt, hogyan érhető el egy webhely, és egy .pac végződésű URL-t kap. Ha ezt a gazdanevet beírja a socket-kapcsolatba, zsákutcába jut: ez egy konfigurációs szkriptet azonosít.
CFNetworkCopyProxiesForURL a cél URL-hez rendezett szótártömböt ad vissza. A végpont mezőinek olvasása előtt vizsgálja meg a kCFProxyTypeKey kulcsot. A kCFProxyTypeAutoConfigurationURL típusú szótár kCFProxyAutoConfigurationURLKey értéket ad, amely további kiértékelési lépést igényel.
- Kérje le a rendszer aktuális proxybeállításait, és igényeljen útvonalakat a tényleges cél URL-hez.
- Ha egy eredmény PAC URL-re hivatkozik, értékelje ki azt a szkriptet ugyanahhoz a célhoz.
- Olvassa ki a kapott jelöltek típusait és végpontjait. A HTTP-proxy, a SOCKS-proxy és a közvetlen útvonal eltérő kapcsolatkezelést igényel.
- A megengedett hiba- és tartalékviselkedés alkalmazásakor őrizze meg a jelöltek sorrendjét.
CFNetworkExecuteProxyAutoConfigurationURL aszinkron módon tölti le és értékeli ki a szkriptet. Közvetlen visszatérési értéke egy run loop forrás. Ütemezze ezt a forrást; a visszahívás a munka befejezése után adja meg a kiértékelés eredményét vagy a hibát. A forrás létrehozása és egy üres eredményváltozó azonnali olvasása semmire sem vár. Érvénytelenítse a forrást, ha a műveletet meg kell szakítani.
Tartsa a cél URL-t a lekérdezéshez kapcsolva. Egy PAC-szkript két gazdagéphez eltérő útvonalat választhat, ezért ha egyetlen feloldott proxyt tárol minden későbbi cél válaszaként, az megváltoztatja a szkript szabályzatát. Hasonlóképpen a közvetlen jelölt egy kifejezett útvonal, nem pedig hiányzó proxy-gazdanév.
Ezek az API-k akkor hasznosak, amikor egy egyéni átviteli rétegnek értelmeznie kell a rendszerbeállításokat. Nem valósítják meg az adott átvitel következő proxyprotokollját, és a lekérdezés nem kér le jelszavakat a Keychainből. macOS-en a proxy hitelesítő adatait külön egyeztesse a Keychainben.