Oceniaj adresy URL PAC zwracane przez CFNetworkCopyProxiesForURL
Zamieniaj wyniki automatycznej konfiguracji serwera proxy CFNetwork na trasy właściwe dla celu, nie myląc adresu PAC z punktem końcowym serwera proxy.
Twoja aplikacja pyta CFNetwork, jak dotrzeć do witryny, i otrzymuje URL kończący się na .pac. Umieszczenie tej nazwy hosta w połączeniu socket to zła droga: identyfikuje ona skrypt konfiguracyjny.
CFNetworkCopyProxiesForURL zwraca uporządkowaną tablicę słowników dla docelowego URL. Sprawdź kCFProxyTypeKey, zanim odczytasz pola punktu końcowego. Słownik typu kCFProxyTypeAutoConfigurationURL dostarcza kCFProxyAutoConfigurationURLKey, co wymaga jeszcze jednego kroku oceny.
- Pobierz bieżące ustawienia serwera proxy systemu i poproś o trasy do rzeczywistego docelowego URL.
- Gdy wynik odwołuje się do URL PAC, oceń ten skrypt dla tego samego celu.
- Odczytaj typy i punkty końcowe uzyskanych kandydatów. Serwer proxy HTTP, serwer proxy SOCKS i trasa bezpośrednia wymagają innej obsługi połączenia.
- Zachowaj kolejność kandydatów podczas stosowania dozwolonego zachowania awaryjnego i zapasowego.
CFNetworkExecuteProxyAutoConfigurationURL pobiera i ocenia skrypt asynchronicznie. Jego natychmiastowa wartość zwracana to źródło run loop. Zaplanuj to źródło; wywołanie zwrotne przekazuje wynik oceny lub błąd po zakończeniu pracy. Utworzenie źródła i natychmiastowy odczyt pustej zmiennej wyniku na nic nie czeka. Unieważnij źródło, jeśli operację trzeba anulować.
Utrzymuj docelowy URL powiązany z wyszukiwaniem. Skrypt PAC może wybrać różne trasy dla dwóch hostów, więc zapisanie jednego rozwiązanego serwera proxy jako odpowiedzi dla każdego kolejnego celu zmienia politykę skryptu. Podobnie bezpośredni kandydat to jawna trasa, a nie brakująca nazwa hosta serwera proxy.
Te interfejsy API są przydatne, gdy niestandardowy transport musi interpretować ustawienia systemu. Nie implementują one kolejnego protokołu serwera proxy dla tego transportu, a wyszukiwanie nie pobiera haseł z Keychain. W systemie macOS dopasuj osobno dane uwierzytelniające serwera proxy w Keychain.