네트워크/HTTP

URL Parser

URL을 구성 요소로 분해합니다 — 프로토콜, 호스트, 포트, 경로, 쿼리 매개변수, 프래그먼트.


                    

A URL is made of several parts — protocol, host, port, path, query parameters, and a fragment — that are easy to mix up when reading a long link. This tool breaks a URL down into those parts and shows each one separately.

How to use it

Common uses

Things to keep in mind

The fragment (the part after #) is never sent to the server — it's a purely client-side part of the URL the server never even sees.

Hosts with non-ASCII characters (Cyrillic, CJK) are actually transmitted over the network in punycode (xn--...), even when the browser's address bar shows plain letters.

이 도구에 대한 아티클: URL 파싱: 웹 주소는 어떤 부분으로 이루어져 있을까

자주 묻는 질문

URL의 "host"와 "origin"의 차이는 무엇인가요?

host는 도메인과 포트일 뿐이지만(example.com:8080), origin은 스킴도 포함합니다(https://example.com:8080) — 두 URL이 같은 origin을 공유하려면 세 가지 모두 일치해야 합니다.

파싱된 경로가 입력한 것과 다르게 보이는 이유는 무엇인가요?

브라우저와 파서는 URL을 정규화합니다 — "./"와 "../" 세그먼트를 축소하고, 일부 퍼센트 인코딩된 문자를 디코딩하며, 단순 도메인에 후행 슬래시를 추가합니다 — 따라서 파싱 결과는 해결된 정규 형태를 반영합니다.

여기서 URL을 파싱하면 어딘가로 전송되나요?

아니요. 파싱은 네이티브 URL API를 사용하여 브라우저 내에서 완전히 이루어집니다 — 서버로 전송되는 것은 없습니다.

URL의 userinfo란 무엇이고 왜 위험한가요?

호스트 앞의 "사용자이름:비밀번호@" 부분은 자격 증명을 위한 것이지만, 공격자는 이를 이용해 피싱 링크를 위장합니다: https://accounts.google.com@evil.com/ 은 실제로 Google이 아니라 evil.com으로 연결됩니다.

일부 URL의 호스트가 xn--로 시작하는 무의미한 문자열처럼 보이는 이유는 무엇인가요?

이는 국제화 도메인 이름(IDN)을 위한 punycode 인코딩입니다 — 키릴 문자나 CJK 등 비ASCII 문자를 포함한 도메인을 더 오래된 DNS 시스템과 호환되는 형식으로 표현하는 방법입니다.

아티클: 네트워크/HTTP