Evaluer PAC-URL'er returneret af CFNetworkCopyProxiesForURL
Omsæt CFNetwork-resultater for automatisk proxykonfiguration til destinationsspecifikke ruter uden at forveksle PAC-adressen med proxy-endpointet.
Din applikation spørger CFNetwork, hvordan man når en hjemmeside, og får en URL, der slutter på .pac. At sætte det værtsnavn ind i socketforbindelsen er en forkert drejning: det identificerer et konfigurationsscript.
CFNetworkCopyProxiesForURL returnerer et ordnet array af ordbøger for mål-URL'en. Undersøg kCFProxyTypeKey, før du læser endpoint-felterne. En ordbog af typen kCFProxyTypeAutoConfigurationURL leverer kCFProxyAutoConfigurationURLKey, hvilket kræver endnu et evalueringstrin.
- Hent de aktuelle systemproxyindstillinger, og bed om ruter til den faktiske destinations-URL.
- Når et resultat henviser til en PAC-URL, skal du evaluere det script for den samme destination.
- Læs de resulterende kandidattyper og endpoints. En HTTP-proxy, en SOCKS-proxy og en direkte rute kræver forskellig håndtering af forbindelsen.
- Bevar kandidatrekkefølgen, når du anvender den tilladte fejl- og fallbackadfærd.
CFNetworkExecuteProxyAutoConfigurationURL downloader og evaluerer scriptet asynkront. Dens umiddelbare returværdi er en run loop-kilde. Planlæg den kilde; callbacket leverer evalueringsresultatet eller fejlen, når arbejdet er færdigt. At oprette kilden og straks læse en tom resultatvariabel venter ikke på noget. Ugyldiggør kilden, hvis operationen skal annulleres.
Hold mål-URL'en knyttet til opslaget. Et PAC-script kan vælge forskellige ruter for to værter, så hvis man gemmer én opløst proxy som svaret for hver efterfølgende destination, ændres scriptets politik. Ligeledes er en direkte kandidat en eksplicit rute, ikke et manglende proxy-værtsnavn.
Disse API'er er nyttige, når en brugerdefineret transport skal fortolke systemindstillinger. De implementerer ikke den efterfølgende proxyprotokol for den transport, og opslaget henter ikke adgangskoder fra Keychain. På macOS skal du matche proxy-legitimationsoplysningerne i Keychain separat.