배치 파일에서 인코딩된 프록시 자격 증명을 그대로 유지하기
Windows 명령을 .bat 파일로 옮길 때 퍼센트 인코딩된 프록시 사용자 이름과 비밀번호를 보존합니다.
프록시 URL은 직접 구성하면 작동하지만, 같은 값을 Windows 배치 파일로 옮긴 뒤에는 인증이 실패합니다. HTTP 클라이언트가 URL을 받기 전에 배치 파서가 퍼센트 기호를 바꾸었는지 확인하십시오.
표현은 두 가지입니다. URL 인코딩은 역슬래시를 %5C로, 물음표를 %3F로 나타낼 수 있습니다. 배치 파일 명령에서 리터럴 퍼센트 기호는 %%로 이스케이프해야 합니다.
예시 계정 domain\user에 자리 표시자 비밀번호 pass?를 사용하는 경우 .bat 파일에는 다음이 들어갈 수 있습니다:
set "https_proxy=http://domain%%5Cuser:pass%%[email protected]:8080"
그 뒤에 실행되는 프로세스는 domain%5Cuser:pass%3F을 포함하는 URL을 받아야 합니다. 겹친 퍼센트 기호는 배치 원본에 속하며, 클라이언트가 저장하는 프록시 URL의 것이 아닙니다.
그 배치 표기를 .npmrc 파일이나 응용 프로그램의 프록시 필드에 복사하지 마십시오. 그 입력은 같은 배치 구문 분석 단계를 거치지 않습니다. 마찬가지로 이 예제는 PowerShell 구문이 아닙니다. CALL이나 두 번째 셸용으로 만든 명령 같은 다른 래퍼는 또 다른 구문 분석 단계를 추가할 수 있으므로 별도로 검토해야 합니다.
표시된 것처럼 SET 할당을 따옴표로 묶어 우연한 공백이나 셸 메타 문자가 의도하지 않은 명령의 일부가 되지 않게 하십시오. 따옴표만으로는 퍼센트 확장을 막을 수 없습니다.
결과를 확인할 때는 비밀번호가 포함된 URL을 공유 로그에 출력하는 대신 예상 인코딩을 가린 표현과 비교하십시오. 셸 이스케이프 수정은 자격 증명을 보존할 뿐, 클라이언트가 이미 지원하지 않던 인증 방식을 선택하지는 않습니다.