URL 인코딩 쿼리 매개변수 및 리디렉션 URI

인증 또는 API 요청이 중단되지 않도록 리디렉션_uri 값, 콜백 URL 및 중첩된 매개변수를 안전하게 인코딩하세요.

이 가이드에서는 URL 인코딩을 실용적으로 유지합니다. 리디렉션 흐름, 쿼리 매개변수, 범위 값, 전체 URL 인코딩과 단일 구성 요소 인코딩 간의 차이점을 설명합니다.

이럴 때 사용하세요
콜백 URL, 중첩된 쿼리 문자열 또는 리디렉션_uri 값이 계속 거부되거나 잘립니다.
가장 먼저 점검해야 할 사항
전체 URL을 인코딩했는지 아니면 매개변수 구성요소만 인코딩했는지 확인하세요. 이러한 차이는 일반적으로 깨진 리디렉션을 설명합니다.
일반적인 함정
공백, 더하기 기호, at 기호 및 물음표는 로그에서는 무해해 보이지만 원시로 복사하면 요청이 중단되는 경우가 많습니다.
예시 워크플로우
redirect_uri 값 인코드하기
중첩된 콜백 URL은 외부 요청에 그대로 붙여넣는 것이 아니라 매개변수 값으로 인코딩되어야 합니다.
redirect_uri=https%3A%2F%2Fapp.example.com%2Fcallback%3Fnext%3D%252Fsettings
범위 문자열 인코딩
OAuth 범위 값에는 안정적인 전송을 위해 백분율로 인코딩되어야 하는 공백이 포함되는 경우가 많습니다.
scope=read%3Ausers%20write%3Ausers
검색 또는 이메일 값 처리
+, @, / 및 ?와 같은 문자 이는 올바른 구성 요소를 인코딩하고 있다는 좋은 신호입니다.
email=dev%2Balerts%40example.com
콜백을 읽을 수 있게 유지하세요
라이브 도구를 사용하면 한 번에 하나의 값을 인코딩하거나 디코딩할 수 있습니다. 이는 리디렉션 로그를 읽기 어려울 때 유용합니다.
https://app.example.com/callback?next=/settings
encodeURI 대 encodeURIComponent

구조적으로 보존하려는 전체 URL에는 encodeURI를 사용하세요. 리디렉션_uri, 상태 또는 검색 쿼리와 같은 하나의 매개변수 값에 대해 encodeURIComponent를 사용합니다.

  • 대부분의 인증 및 API 버그는 encodeURIComponent가 필요하고 실수로 예약된 문자를 유지하는 데서 발생합니다.
맹목적으로 전체 요청이 아닌 값을 인코딩합니다.

서명된 요청, OAuth 리디렉션 및 중첩된 URL은 모두 올바른 레이어에서 올바른 구성 요소를 인코딩하는 데 달려 있습니다. 의심스러운 경우 먼저 값을 분리하여 자체적으로 테스트하십시오.

  • 문제가 실제로 쿼리 문자열이 아닌 요청 본문에 있는 경우 JSON 형식으로 이동하세요.