필요한 툴을, 바로 쓸 수 있게

URL 인코더·디코더

인코딩 칸에 %가 섞인 주소를 붙여 넣으면 원문 칸에 한글로 풀리고, 원문 칸에 글을 넣으면 고른 규칙으로 바로 인코딩됩니다. 주소는 스킴·호스트·경로·쿼리 값마다 나눠 보여 주고, EUC-KR로 만든 옛 주소와 두 번 인코딩된 값도 가려냅니다. 아래 기호 지도와 언어별 함수 결과에서는 같은 글이 어디서 다르게 인코딩되는지 확인할 수 있습니다.

최종 수정 2026-10-22계산은 브라우저 안에서만 처리
예시

    기호 지도
    기호를 누르면 규칙마다 어떻게 바뀌는지 아래에 보입니다. 방향키로 옮겨 다닙니다.

    언어·함수별 결과원문 칸의 글 · 누르면 복사

      최종 수정 2026-10-22입력값은 저장하지 않습니다

      ROBERIN 기준필요한 툴을,
      바로 쓸 수 있게.
      • 바로 보이는 화면입력 위치와 결과 위치를 또렷하게 둡니다.
      • 결과 먼저핵심 결과를 앞에 두고, 과정은 필요할 때만 보여줍니다.
      • 요구 줄이기가입이나 불필요한 정보 입력 없이 바로 쓰게 합니다.

      URL 인코딩은 글자를 %와 16진수 두 자리로 바꿉니다

      URL에는 영문·숫자와 몇 가지 기호만 그대로 쓸 수 있습니다. 그 밖의 글자는 먼저 바이트로 바꾼 뒤 바이트마다 %와 16진수 두 자리로 적는데, 이것을 퍼센트 인코딩 또는 URL 인코딩이라고 합니다. 한글은 UTF-8로 한 글자가 3바이트라서 '한'은 %ED%95%9C 9자가 되고, 공백은 %20이 됩니다(폼 전송에서는 +). URL 디코딩은 반대로 %XX를 바이트로 되돌린 뒤 글자로 읽는 일입니다.

      같은 글이라도 주소의 어느 자리에 넣느냐에 따라 결과가 달라집니다. 검색어처럼 값 하나로 넣을 글은 &·=·/·?까지 바꿔야 하고, 이미 주소 꼴인 글은 그 구분 기호를 그대로 둬야 주소가 열립니다. 이 도구는 두 칸 가운데 고친 칸을 기준으로 바로 바꾸고, 주소를 부분별로 나눠 풀며, EUC-KR로 만든 옛 주소와 두 번 인코딩된 값도 가려냅니다. URL 인코딩은 암호화가 아니어서 누구나 원래 글로 되돌릴 수 있습니다.

      URL을 인코딩하거나 풀어야 하는 상황

      • 붙여 넣은 주소가 %로 길게 보일 때: 메신저나 문서에 붙인 주소가 %EC%84%9C%EC%9A%B8…처럼 보이면 어떤 페이지인지 알기 어렵습니다. 인코딩 칸에 붙이면 검색어와 경로가 한글로 보입니다.
      • 한글 검색어·상품명을 링크에 넣을 때: 'A&B'나 'C++'를 그대로 붙이면 & 뒤가 다른 항목으로, +가 공백으로 읽힙니다. 값 하나 규칙으로 바꿔 붙여야 그대로 전달됩니다.
      • 로그인·결제 뒤 돌아올 주소를 값으로 넣을 때: redirect_uri나 returnUrl에 넣는 주소는 안쪽 주소를 통째로 인코딩해야 바깥 주소와 섞이지 않습니다.
      • API 서명을 만들 때: OAuth 1.0 서명과 AWS 서명 버전 4는 RFC 3986 비예약 문자만 그대로 두고 공백을 %20으로 적어야 서명이 맞습니다. 한 글자만 달라도 인증이 실패합니다.
      • 접속 기록·분석 도구의 주소를 읽을 때: 서버 로그와 유입 경로에는 주소가 인코딩된 채 남습니다. 어떤 검색어로 들어왔는지 보려면 풀어야 합니다.
      • 옛 게시판·쇼핑몰 주소를 읽을 때: EUC-KR로 만든 사이트는 '한글'을 %C7%D1%B1%DB로 적어서 UTF-8 디코더로는 깨집니다.

      쓰는 법

      1. 풀기(디코딩): 오른쪽 URL 인코딩 칸에 %가 섞인 주소나 값을 붙여 넣습니다. 붙여 넣은 모양을 보고 규칙을 고르고(주소면 주소 전체, + 공백이 보이면 폼 +), 왼쪽 원문 칸에 풀린 글이 나옵니다.
      2. 인코딩: 왼쪽 원문 칸에 글을 넣고 넣을 자리에 맞는 규칙을 고릅니다. 검색어·파일 이름·이동 주소처럼 값 하나면 '값 하나', 주소 전체면 '주소 전체', HTML 폼과 같은 결과가 필요하면 '폼 +', 서명용이면 '엄격'입니다.
      3. 주소 해부 보기: 칸의 글이 주소나 쿼리 문자열이면 스킴·호스트·경로·쿼리 값·조각을 나눠 각각 풀어 보여 줍니다. 값 속에 다른 주소가 있으면 '이 주소 풀기'로 그 주소를 다시 펼칩니다. 여러 줄이면 커서가 있는 줄을 해부합니다.
      4. 글자 인코딩: 기본값은 자동 판별입니다. UTF-8로 읽히지 않으면 EUC-KR·Shift_JIS·Windows-1252 가운데 맞는 쪽으로 읽고 옆에 표시합니다. 옛 사이트에 맞춰 인코딩하려면 직접 고릅니다.
      5. 기호 지도와 함수 결과: 기호를 누르면 네 규칙에서 어떻게 바뀌는지와 그 까닭이 나옵니다. 언어·함수별 결과는 원문 칸의 글을 JavaScript·PHP·Python 함수로 바꾼 결과이며, 지금 규칙과 다른 글자를 표시합니다. 줄을 누르면 그 결과가 복사됩니다.

      네 가지 규칙, 무엇을 그대로 두나

      규칙마다 영문·숫자 말고 그대로 두는 기호가 다릅니다. 다른 도구나 코드와 결과가 다르다면 대개 이 차이 때문입니다.

      규칙별로 그대로 두는 기호와 공백 표기
      규칙그대로 두는 기호(영문·숫자 말고)공백이미 있는 %쓰는 곳 · 같은 함수
      값 하나- _ . ! ~ * ' ( )%20%25로 바꿈쿼리값·경로 조각 · JavaScript encodeURIComponent()
      주소 전체구분 기호 : / ? # [ ] @ ! $ & ' ( ) * + , ; =와 - . _ ~(자리마다 몇 개 다름)%20그대로 둠주소창·링크 · 브라우저의 URL 표준
      폼 +* - . _+%25로 바꿈HTML 폼 전송 · URLSearchParams, Java URLEncoder
      엄격- . _ ~%20%25로 바꿈OAuth 1.0·AWS 서명 · PHP rawurlencode()

      엄격 규칙의 네 기호는 RFC 3986이 비예약 문자로 정한 것이라, 이 문자를 인코딩하든 안 하든 같은 주소로 봅니다. 값 하나 규칙이 ! ' ( ) *까지 두는 것은 JavaScript가 옛 규격 RFC 2396의 비예약 문자를 따랐기 때문이며, URL 표준도 이 집합을 component 집합으로 따로 정해 두었습니다.

      폼 + 규칙은 URLSearchParams와 같습니다. 브라우저가 실제로 HTML 폼을 보낼 때는 여러 줄 입력칸의 줄바꿈을 %0D%0A로 바꾸지만, 이 도구와 URLSearchParams는 %0A로 둡니다(Chromium 151 실측).

      기호별로 보면

      자주 헷갈리는 기호가 규칙마다 어떻게 바뀌는지 모았습니다. 주소 전체 칸은 http·https 주소의 쿼리 자리 기준입니다. 도구 위의 기호 지도에서는 35개 기호를 모두 눌러 볼 수 있습니다.

      기호 하나를 규칙별로 바꾼 결과
      기호값 하나주소 전체(쿼리)폼 +엄격encodeURI()
      공백%20%20+%20%20
      &%26&%26%26&
      =%3D=%3D%3D=
      +%2B+%2B%2B+
      /%2F/%2F%2F/
      ?%3F?%3F%3F?
      #%23#%23%23#
      %%25%%25%25%25
      ~~~%7E~~
      ****%2A*
      ''%27%27%27'
      !!!%21%21!
      가%EA%B0%80%EA%B0%80%EA%B0%80%EA%B0%80%EA%B0%80

      주소 전체 규칙이 %를 그대로 두는 까닭은 이미 인코딩된 %XX를 지키기 위해서입니다. 대신 글자 그대로의 %가 들어 있으면 그 뒤 두 글자가 16진수인지 따로 확인해야 하므로, 도구가 그런 %의 개수를 알려 줍니다. PHP urlencode()는 폼 규칙과 비슷하지만 *도 %2A로 바꾸고, Python quote()는 엄격 규칙에 /만 더 둡니다.

      %20과 +, 공백은 어떻게 읽히나

      공백을 +로 적는 것은 HTML 폼 전송(application/x-www-form-urlencoded)의 규칙입니다. 경로에서 +는 그냥 더하기 기호이고, 쿼리에서도 받는 쪽이 어떤 함수로 푸느냐에 따라 공백이 되기도 하고 더하기로 남기도 합니다. 그래서 진짜 더하기는 %2B로, 공백은 %20으로 적으면 어느 쪽에서도 같은 뜻으로 읽힙니다.

      a+b%20c%2B를 함수마다 푼 결과(2026-10-22 실측)
      함수결과+를 공백으로
      JavaScript decodeURIComponent()a+b c+아니요
      JavaScript URLSearchParamsa b c+예
      PHP urldecode()a b c+예
      PHP rawurldecode()a+b c+아니요
      Python unquote()a+b c+아니요
      Python unquote_plus()a b c+예

      이 도구는 폼 + 규칙에서만 +를 공백으로 읽습니다. 값 하나·엄격 규칙으로 풀었는데 +가 남아 있으면 상태 줄에 '폼 + 규칙으로 읽기' 단추가 나옵니다. 주소 전체 규칙은 구조를 지키려고 +를 그대로 두고, 아래 주소 해부에서 쿼리 값만 폼 규칙으로 풀어 보여 줍니다.

      주소 전체를 인코딩할 때, encodeURI와 브라우저의 차이

      주소 전체를 바꿀 때 흔히 쓰는 encodeURI()는 구분 기호를 두지만 %도 바꾸고 도메인을 따로 다루지 않습니다. 브라우저 주소창은 URL 표준에 따라 경로·쿼리·조각마다 다른 집합을 쓰고, 이미 있는 %XX는 두며, 한글 도메인은 퓨니코드로 바꿉니다. 이 도구의 주소 전체 규칙은 브라우저 쪽을 따릅니다.

      같은 주소, encodeURI()와 URL 표준(주소 전체 규칙)
      원문encodeURI()주소 전체(URL 표준)
      https://example.com/a%20bhttps://example.com/a%2520bhttps://example.com/a%20b
      https://한글.한국/https://%ED%95%9C%EA%B8%80.%ED%95%9C%EA%B5%AD/https://xn--bj0bj06e.xn--3e0b707e/
      https://example.com/?q=[1]https://example.com/?q=%5B1%5Dhttps://example.com/?q=[1]
      https://example.com/?q=it'shttps://example.com/?q=it'shttps://example.com/?q=it%27s
      https://example.com/?next=https://b.com/?x=1&y=2https://example.com/?next=https://b.com/?x=1&y=2https://example.com/?next=https://b.com/?x=1&y=2

      마지막 줄처럼 값 속에 주소가 그대로 들어 있으면 어느 방식도 고쳐 주지 못합니다. 바깥 주소는 y=2를 자기 항목으로 읽기 때문입니다. 안쪽 주소를 값 하나 규칙으로 따로 바꿔 next=https%3A%2F%2Fb.com%2F%3Fx%3D1%26y%3D2처럼 붙여야 합니다. 도구는 주소 전체 규칙에서 이런 값을 찾으면 상태 줄에 알립니다.

      두 번 인코딩과 한 겹 풀기

      이미 인코딩된 글을 다시 인코딩하면 %가 %25로 바뀝니다. 그래서 %20은 %2520이 되고, 한 번 풀면 %20, 다시 풀어야 공백이 됩니다. 프레임워크나 HTTP 라이브러리가 값을 알아서 인코딩하는데 코드에서 한 번 더 바꿨을 때 흔히 생깁니다. RFC 3986 2.4절도 같은 글을 두 번 인코딩하거나 두 번 풀지 말라고 정합니다.

      '한 글'을 값 하나 규칙으로 거듭 인코딩한 결과
      횟수결과길이
      1번%ED%95%9C%20%EA%B8%8021자
      2번%25ED%2595%259C%2520%25EA%25B8%258035자
      3번%2525ED%252595%25259C%252520%2525EA%2525B8%25258049자

      인코딩 칸의 글에 %25 다음 16진수 두 자리가 보이면 도구가 두 번 인코딩으로 짐작하고 '한 겹 더 풀기' 단추를 보여 줍니다. 이 단추는 %25XX만 %XX로 바꾸므로, 주소의 다른 구분 기호는 건드리지 않습니다. 다만 원래 글에 '%20'이라는 글자 자체가 들어 있었다면 한 겹 더 푸는 것이 오히려 글을 바꾸니 출처를 확인합니다.

      EUC-KR로 인코딩된 옛 주소

      요즘 주소는 UTF-8이 기본이지만(RFC 3986 2.5절), 오래된 한국 사이트는 페이지를 EUC-KR(실제로는 확장판 CP949)로 만들어 폼으로 보낸 검색어도 그 바이트로 인코딩했습니다. 한글 한 글자가 2바이트라 '한'은 %C7%D1입니다. URL 표준도 http·https 주소의 쿼리는 페이지의 글자 인코딩으로 바꾸고 경로는 언제나 UTF-8로 바꾸도록 정해 두었습니다.

      같은 글자의 UTF-8과 EUC-KR(CP949) 인코딩
      글자UTF-8EUC-KR
      한%ED%95%9C%C7%D1
      글%EA%B8%80%B1%DB
      가%EA%B0%80%B0%A1
      뷁%EB%B7%81%94%EE
      AAA

      EUC-KR 값을 UTF-8로 풀면 바이트가 맞지 않아 �가 나옵니다. 이 도구의 자동 판별은 먼저 UTF-8로 읽어 보고, 실패하면 EUC-KR·Shift_JIS·Windows-1252로 읽은 결과 가운데 흔한 글자가 많은 쪽을 고릅니다. 반대로 옛 사이트에 넣을 값을 만들 때는 글자 인코딩을 EUC-KR로 고르면 됩니다. EUC-KR에 없는 글자(이모지 등)는 브라우저 폼처럼 &#번호;를 인코딩한 %26%23번호%3B로 적습니다.

      한글 도메인은 퓨니코드로 바뀝니다

      도메인(호스트)에는 퍼센트 인코딩을 쓰지 않습니다. 한글 도메인은 국제화 도메인 규칙(IDNA)에 따라 xn--으로 시작하는 ASCII 이름(퓨니코드, RFC 3492)으로 바뀝니다. 주소 전체 규칙은 호스트만 이렇게 바꾸고 경로·쿼리의 한글은 %XX로 바꾸며, 풀 때는 xn-- 이름을 다시 한글로 보여 줍니다.

      도메인과 퓨니코드
      도메인퓨니코드
      한글.한국xn--bj0bj06e.xn--3e0b707e
      로베린.krxn--2o2biyp8d.kr
      例え.jpxn--r8jz45g.jp
      bücher.dexn--bcher-kva.de

      코드로 할 때

      // JavaScript
      encodeURIComponent('한글 문서 & C++');         // %ED%95%9C%EA%B8%80%20%EB%AC%B8%EC%84%9C%20%26%20C%2B%2B
      decodeURIComponent('%ED%95%9C%EA%B8%80');       // 한글 (잘못된 %가 있으면 URIError)
      new URLSearchParams({ q: '서울 맛집' }).toString(); // q=%EC%84%9C%EC%9A%B8+%EB%A7%9B%EC%A7%91
      new URL('https://한글.한국/소개').href;            // https://xn--bj0bj06e.xn--3e0b707e/%EC%86%8C%EA%B0%9C
      
      # Python
      from urllib.parse import quote, quote_plus, unquote, urlencode
      quote('한글 문서', safe='')                       # %ED%95%9C%EA%B8%80%20%EB%AC%B8%EC%84%9C
      quote_plus('한글 문서')                           # %ED%95%9C%EA%B8%80+%EB%AC%B8%EC%84%9C
      unquote('%C7%D1%B1%DB', encoding='cp949')        # 한글
      urlencode({'q': '서울 맛집', 'page': 2})          # q=%EC%84%9C%EC%9A%B8+%EB%A7%9B%EC%A7%91&page=2
      
      // PHP
      rawurlencode('한글 문서');   // %ED%95%9C%EA%B8%80%20%EB%AC%B8%EC%84%9C
      urlencode('한글 문서');      // %ED%95%9C%EA%B8%80+%EB%AC%B8%EC%84%9C
      http_build_query(['q' => '서울 맛집', 'page' => 2]);
      
      // Java
      URLEncoder.encode("한글 문서", StandardCharsets.UTF_8);  // %ED%95%9C%EA%B8%80+%EB%AC%B8%EC%84%9C
      URLDecoder.decode("%ED%95%9C+%EA%B8%80", StandardCharsets.UTF_8); // 한 글

      폼 규칙 함수(URLSearchParams, Python quote_plus(), PHP urlencode(), Java URLEncoder)는 공백을 +로 적으므로, 경로에 넣을 값이나 서명용 값에는 %20을 내는 함수를 씁니다.

      자주 틀리는 경우

      • 주소 전체를 값 하나 규칙으로 바꾼 경우: https%3A%2F%2F…가 되어 링크로 열리지 않습니다. 주소 자체를 고칠 때는 주소 전체 규칙을, 다른 주소의 값으로 넣을 때만 값 하나 규칙을 씁니다.
      • 값 속 &·#를 그대로 둔 경우: 'A&B'는 A만 전달되고 #뒤는 서버에 가지 않습니다. 값 하나 규칙으로 A%26B, %23을 만듭니다.
      • C++가 'C' 뒤 공백 둘로 바뀐 경우: 폼 규칙으로 푸는 곳에 +를 그대로 넣었기 때문입니다. C%2B%2B로 적습니다.
      • %2520처럼 두 번 인코딩한 경우: 라이브러리가 이미 인코딩하는 값을 직접 한 번 더 바꾼 경우가 많습니다. 어느 단계에서 인코딩하는지 한 곳으로 정합니다.
      • EUC-KR 값을 UTF-8로 푼 경우: 글자가 깨지거나 �가 나옵니다. 글자 인코딩을 EUC-KR로 바꿔 풉니다.
      • decodeURIComponent가 멈춘 경우: '100%'처럼 % 뒤에 16진수 두 자리가 없으면 URIError로 멈춥니다. 이 도구는 그런 %를 그대로 두고 위치를 알려 줍니다.

      한계

      • 글자를 바꾸는 계산만 합니다. 주소가 실제로 열리는지, 안전한 주소인지는 확인하지 않으며 주소에 접속하지도 않습니다.
      • 주소 전체 규칙은 URL 표준의 구성 요소별 집합만 적용합니다. 브라우저가 함께 하는 정리(스킴·호스트 소문자, ../ 정리, 기본 포트 빼기, 빈 경로에 / 붙이기)는 하지 않습니다. Chrome 151은 경로의 |도 %7C로 바꾸는 등 브라우저마다 몇 기호가 다를 수 있습니다.
      • mailto:처럼 http·https가 아닌 주소도 경로 집합으로 바꿉니다. 이런 주소의 경로에 대한 URL 표준 규칙(불투명 경로)과는 공백 처리가 다를 수 있습니다.
      • 자동 판별은 짐작입니다. 짧은 값이나 드문 글자(CP949 확장 한글, 일본어 판의 반각 가나)는 다른 인코딩으로 읽을 수 있으니 결과가 이상하면 직접 고릅니다. 옛 인코딩은 EUC-KR·Shift_JIS·Windows-1252만 다루며 EUC-JP·Big5 등은 없습니다.
      • 주소 해부는 읽기와 복사만 합니다. 쿼리 항목을 고치거나 더하려면 URL 쿼리 ↔ 항목 표 도구를 씁니다. 언어·함수별 결과는 원문 앞 4,000자까지만 비교합니다.

      기준: 인코딩 집합은 URL 표준(2026년 10월 19일 판)과 RFC 3986, 서명 규칙은 RFC 5849와 AWS 설명서, 함수 동작은 각 언어 설명서를 2026년 10월 22일에 확인했습니다. 표의 값은 이 도구와 PHP 8.5·Python 3.14·Node.js 26·Chromium 151에서 같은 결과를 확인했습니다.

      출처

      자주 묻는 질문

      URL 인코딩과 디코딩은 무엇인가요?

      주소에 그대로 쓸 수 없는 글자를 바이트마다 %와 16진수 두 자리로 적는 것이 URL 인코딩이고, 그 표기를 원래 글자로 되돌리는 것이 디코딩입니다. '한'은 UTF-8로 3바이트라 %ED%95%9C가 되고, 풀면 다시 '한'이 됩니다. 암호화가 아니라 표기 방식이라 누구나 되돌릴 수 있습니다.

      encodeURI와 encodeURIComponent는 무엇이 다른가요?

      encodeURIComponent는 값 하나에 쓰는 함수라 & = / ? # : 같은 구분 기호까지 바꾸고, encodeURI는 주소 전체에 쓰는 함수라 그 기호를 그대로 둡니다. 그래서 검색어 'A&B'를 encodeURI로 바꾸면 &가 남아 값이 둘로 갈립니다. 또 encodeURI는 이미 있는 %20도 %2520으로 바꾸므로, 주소 전체에는 이 도구의 '주소 전체' 규칙(URL 표준)이 더 안전합니다.

      공백은 %20인가요, +인가요?

      둘 다 쓰입니다. 경로와 대부분의 값에서는 %20이고, HTML 폼 전송과 URLSearchParams는 공백을 +로 적습니다. 풀 때도 decodeURIComponent·PHP rawurldecode·Python unquote는 +를 그대로 두고, URLSearchParams·PHP urldecode·Python unquote_plus는 공백으로 읽습니다. 진짜 더하기는 %2B, 공백은 %20으로 적으면 어느 쪽에서도 헷갈리지 않습니다.

      %가 %25로 바뀌어 %2520처럼 나오는 이유는 무엇인가요?

      이미 인코딩된 글을 한 번 더 인코딩했기 때문입니다. %는 인코딩 표시라 글자 %는 %25가 되므로 %20이 %2520이 됩니다. RFC 3986도 같은 글을 두 번 인코딩하거나 두 번 풀지 말라고 정합니다. 인코딩 칸에 붙인 값에 %25가 보이면 '한 겹 더 풀기' 단추로 한 겹씩 벗길 수 있습니다.

      풀었더니 글자가 깨지거나 �가 나옵니다.

      UTF-8이 아닌 글자 인코딩으로 만든 값일 가능성이 큽니다. 옛 한국 사이트는 EUC-KR(CP949)로 '한'을 %C7%D1로 적었는데, 이를 UTF-8로 읽으면 깨집니다. 이 도구는 UTF-8로 읽히지 않으면 EUC-KR·Shift_JIS·Windows-1252 가운데 맞는 쪽을 골라 읽고, 글자 인코딩 칸에서 직접 고를 수도 있습니다.

      한글 도메인도 %로 인코딩하나요?

      아닙니다. 도메인에는 퍼센트 인코딩을 쓰지 않고 퓨니코드로 바꾼 xn--로 시작하는 ASCII 이름을 씁니다. 한글.한국은 xn--bj0bj06e.xn--3e0b707e가 됩니다. '주소 전체' 규칙은 도메인만 퓨니코드로 바꾸고, 경로와 쿼리의 한글은 %XX로 바꿉니다.

      다른 주소를 쿼리 값으로 넣으려면 어떻게 하나요?

      안쪽 주소를 '값 하나' 규칙으로 통째 인코딩해 붙입니다. https://b.com/?x=1&y=2는 https%3A%2F%2Fb.com%2F%3Fx%3D1%26y%3D2가 되어, 바깥 주소의 redirect= 뒤에 넣어도 & ? #가 바깥 구분 기호로 읽히지 않습니다. 주소 해부에서는 값 속 주소를 찾아 '이 주소 풀기'로 다시 펼쳐 볼 수 있습니다.

      입력한 주소가 서버로 전송되나요?

      아닙니다. 인코딩·디코딩·주소 해부·도메인 변환은 모두 이 브라우저 안에서 계산하며, 입력한 글을 서버로 보내거나 저장하지 않고 페이지 주소에도 남기지 않습니다. 주소에 비밀번호나 토큰이 들어 있어도 이 페이지 밖으로 나가지 않습니다.