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.

  1. Pobierz bieżące ustawienia serwera proxy systemu i poproś o trasy do rzeczywistego docelowego URL.
  2. Gdy wynik odwołuje się do URL PAC, oceń ten skrypt dla tego samego celu.
  3. 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.
  4. 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.

Powiązane artykuły