CFNetworkCopyProxiesForURL qaytaradigan PAC URL manzillarini baholang
PAC manzilini proksi tugash nuqtasi bilan aralashtirmasdan, CFNetwork avtomatik proksi sozlamalari natijalarini manzilga xos yo'llarga aylantiring.
Ilovangiz CFNetwork'dan veb-saytga qanday yetib borishni so'raydi va .pac bilan tugaydigan URL oladi. Bu xost nomini socket ulanishiga qo'yish noto'g'ri yo'l: u sozlash skriptini bildiradi.
CFNetworkCopyProxiesForURL maqsad URL uchun tartiblangan lug'atlar massivini qaytaradi. Tugash nuqtasi maydonlarini o'qishdan oldin kCFProxyTypeKey ni tekshiring. kCFProxyTypeAutoConfigurationURL turidagi lug'at kCFProxyAutoConfigurationURLKey ni beradi, bu esa yana bir baholash bosqichini talab qiladi.
- Tizimning joriy proksi sozlamalarini oling va haqiqiy manzil URL ga yo'llarni so'rang.
- Natija PAC URL ga ishora qilsa, o'sha skriptni xuddi shu manzil uchun baholang.
- Olingan nomzodlarning turlari va tugash nuqtalarini o'qing. HTTP proksi, SOCKS proksi va to'g'ridan-to'g'ri yo'l turli ulanish ishlovini talab qiladi.
- Ruxsat etilgan muvaffaqiyatsizlik va zaxira xatti-harakatini qo'llashda nomzodlar tartibini saqlang.
CFNetworkExecuteProxyAutoConfigurationURL skriptni asinxron yuklab oladi va baholaydi. Uning darhol qaytaradigan qiymati run loop manbasidir. O'sha manbani rejalashtiring; ish tugagach callback baholash natijasini yoki xatoni beradi. Manbani yaratib, bo'sh natija o'zgaruvchisini darhol o'qish hech narsani kutmaydi. Amalni bekor qilish kerak bo'lsa, manbani bekor qiling.
Maqsad URL ni qidiruvga bog'lab turing. PAC skript ikki xost uchun turli yo'llarni tanlashi mumkin, shuning uchun bitta hal qilingan proksini keyingi har bir manzil uchun javob sifatida saqlash skript siyosatini o'zgartiradi. Xuddi shunday, to'g'ridan-to'g'ri nomzod aniq yo'l, yo'qolgan proksi xost nomi emas.
Bu API lar maxsus transport tizim sozlamalarini talqin qilishi kerak bo'lganda foydali. Ular o'sha transport uchun keyingi proksi protokolini amalga oshirmaydi va qidiruv Keychain'dan parollarni olmaydi. macOS'da proksi hisob ma'lumotlarini Keychain'da alohida moslashtiring.