URL 파서

URL(Uniform Resource Locator)은 웹에서 리소스를 식별합니다. 이 도구는 URL을 스킴, 호스트, 포트, 경로, 쿼리 파라미터, 프래그먼트 등 구성 요소로 분해합니다. 퍼센트 인코딩된 값을 자동으로 디코딩하고, Punycode 변환을 통해 국제화 도메인 이름(IDN)을 처리하며, 파라미터에 포함된 Base64 또는 JSON 데이터를 감지할 수 있습니다.

사양

주요 사용 사례

  • OAuth 2.0 리다이렉트 URL과 콜백 파라미터 디버그
  • 웹훅 URL과 쿼리 파라미터 검사
  • 추적 파라미터 분석(UTM, 리퍼러 데이터)
  • 모바일 딥 링크 디코딩(app://, 커스텀 스킴)
  • URL 라우팅 문제 해결
  • 국제화 도메인 이름을 Unicode와 Punycode 간 변환

기능

  • 모든 URL 구성 요소 파싱(스킴, 호스트, 포트, 경로, 쿼리, 프래그먼트)
  • 퍼센트 인코딩(URL 인코딩)된 값 자동 디코딩
  • 쿼리 문자열을 키-값 쌍으로 파싱
  • 국제화 도메인 이름(IDN)을 Unicode와 Punycode 간 변환
  • 파라미터 값에서 Base64 또는 JSON 감지 및 디코딩
  • 개별 구성 요소를 클립보드에 복사

예제

code 및 state 파라미터가 포함된 OAuth 2.0 인증 콜백.

https://app.example.com/callback?code=abc123&state=xyz789&redirect_uri=https%3A%2F%2Fexample.com

국제화 도메인(Punycode)

사용해 보기 →

Punycode로 인코딩된 도메인 이름이 포함된 URL(xn-- 접두사는 IDN을 나타냄).

https://xn--mnchen-3ya.de/path

국제화 도메인(Unicode)

사용해 보기 →

Punycode로 변환될 Unicode 도메인 이름이 포함된 URL.

https://münchen.de/path

  • 퍼센트 인코딩은 안전하지 않은 문자를 %XX로 대체합니다. XX는 16진수 값입니다.
  • 프래그먼트(#)는 서버로 전송되지 않습니다. 클라이언트 측 전용입니다.
  • 쿼리 파라미터는 동일한 키로 여러 번 나타날 수 있습니다.
  • 사용자 정보의 @ 및 : 같은 일부 문자는 인코딩이 필요합니다.
  • 파라미터 값에는 encodeURIComponent()를, 전체 URL에는 encodeURI()를 사용하세요.

이해하기 URL 파서

URL(Uniform Resource Locator)은 웹의 주소 체계로, RFC 3986에서 URI(Uniform Resource Identifier)의 특정 유형으로 정의됩니다. URL은 여러 구성 요소로 이루어져 있습니다: 스킴(https 같은 프로토콜), 권한(호스트, 선택적 포트, 선택적 사용자 정보), 경로, 선택적인 키-값 파라미터의 쿼리 문자열, 선택적인 프래그먼트 식별자.

퍼센트 인코딩(URL 인코딩)은 URL에서 특수 문자를 표현하는 메커니즘입니다. 비예약 문자 집합(A-Z, a-z, 0-9, -, _, ., ~) 외의 문자는 %XX로 인코딩해야 합니다. XX는 해당 바이트의 16진수 값입니다. 공백은 %20이 됩니다(쿼리 문자열에서는 +). 비 ASCII 문자는 먼저 UTF-8 바이트로 인코딩된 후, 각 바이트가 퍼센트 인코딩됩니다.

쿼리 문자열은 & 문자로 구분된 key=value 쌍으로 파라미터를 전달합니다. 웹 애플리케이션은 이를 검색어, 페이지네이션, 필터링, 정렬, 추적(UTM 파라미터)에 사용합니다. OAuth 2.0 리다이렉트 URL은 쿼리 파라미터에 인증 코드와 상태 토큰을 담습니다. 복잡한 값 자체가 URL 인코딩될 수 있어, 신중한 디코딩이 필요한 인코딩 계층을 만들어냅니다.

국제화 도메인 이름(IDN)은 Punycode 인코딩(RFC 3492)을 사용하여 도메인 이름에 비 ASCII 문자를 표현합니다. xn-- 접두사는 Punycode로 인코딩된 라벨을 나타냅니다. 예를 들어, muenchen.de는 xn--mnchen-3ya.de가 됩니다. 이 인코딩은 ASCII 전용 DNS 시스템과의 호환성을 보장하면서 모든 문자 체계의 도메인 이름을 지원합니다.

JavaScript는 서로 다른 목적의 두 가지 URL 인코딩 함수를 제공합니다. encodeURI는 전체 URI를 인코딩하며 URL에서 구조적 의미를 가진 문자(: / ? # @ 및 = 등)를 보존합니다. encodeURIComponent는 쿼리 파라미터 값 같은 단일 URI 컴포넌트를 인코딩하며 / 와 &를 포함한 모든 특수 문자를 인코딩합니다. 파라미터 값에는 encodeURIComponent를 사용하고, encodeURI는 전체 URL을 인코딩할 때만 사용하세요. 프래그먼트 식별자(# 이후 모든 것)는 RFC 3986에서 클라이언트 측 전용으로 정의됩니다. 브라우저는 이를 페이지 내 내비게이션과 싱글 페이지 애플리케이션의 클라이언트 사이드 라우팅에 사용하지만, 서버로 전송되는 HTTP 요청에는 포함되지 않습니다.

Punycode는 ASCII 전용 DNS 시스템 내에서 국제화 도메인 이름을 가능하게 하는 인코딩입니다. 비라틴 문자를 포함하는 도메인은 xn-- 접두사가 붙은 Punycode로 DNS에 저장되므로, muenchen.de는 xn--mnchen-3ya.de로 저장됩니다. 브라우저는 사용자에게 Unicode 형태를 표시하면서 뒤에서는 DNS 해석에 Punycode 형태를 사용합니다.

쿼리 문자열은 ?color=red&color=blue처럼 동일한 파라미터 이름에 대해 여러 값을 포함할 수 있습니다. 프레임워크마다 이를 다르게 처리합니다 — 일부는 마지막 값을, 일부는 첫 번째 값을, 일부는 모든 값의 배열을 반환합니다. 이 도구는 모든 파라미터 출현을 표시합니다. JavaScript에서 URLSearchParams.getAll()은 첫 번째나 마지막이 아닌 반복되는 키의 모든 값을 가져옵니다.

← 전체 도구로 돌아가기