애플리케이션이 CFNetwork에 웹사이트에 도달하는 방법을 묻고 .pac로 끝나는 URL을 받습니다. 그 호스트 이름을 소켓 연결에 넣는 것은 잘못된 길입니다. 그것은 구성 스크립트를 가리킵니다.

CFNetworkCopyProxiesForURL은 대상 URL에 대한 사전의 정렬된 배열을 반환합니다. 엔드포인트 필드를 읽기 전에 kCFProxyTypeKey을 확인하십시오. kCFProxyTypeAutoConfigurationURL 유형의 사전은 kCFProxyAutoConfigurationURLKey을 제공하며, 여기에는 또 한 번의 평가 단계가 필요합니다.

  1. 현재 시스템 프록시 설정을 가져오고 실제 대상 URL에 대한 경로를 요청하십시오.
  2. 결과가 PAC URL을 가리키면 같은 대상에 대해 그 스크립트를 평가하십시오.
  3. 얻은 후보 유형과 엔드포인트를 읽으십시오. HTTP 프록시, SOCKS 프록시, 직접 경로는 서로 다른 연결 처리가 필요합니다.
  4. 허용된 실패 및 폴백 동작을 적용할 때 후보 순서를 유지하십시오.

CFNetworkExecuteProxyAutoConfigurationURL는 스크립트를 비동기로 다운로드하고 평가합니다. 즉시 반환되는 값은 run loop 소스입니다. 그 소스를 스케줄하십시오. 작업이 끝나면 콜백이 평가 결과나 오류를 제공합니다. 소스를 만들고 빈 결과 변수를 즉시 읽는 것은 아무것도 기다리지 않습니다. 작업을 취소해야 하면 소스를 무효화하십시오.

대상 URL을 조회에 계속 연결해 두십시오. PAC 스크립트는 두 호스트에 서로 다른 경로를 선택할 수 있으므로 확인된 프록시 하나를 이후 모든 대상에 대한 답으로 저장하면 스크립트의 정책이 바뀝니다. 마찬가지로 직접 후보는 명시적 경로이며 사라진 프록시 호스트 이름이 아닙니다.

이 API는 사용자 지정 전송이 시스템 설정을 해석해야 할 때 유용합니다. 그 전송에 필요한 이후 프록시 프로토콜을 구현하지 않으며, 조회는 Keychain에서 암호를 가져오지 않습니다. macOS에서는 Keychain의 프록시 자격 증명을 별도로 일치시키십시오.

관련 글