Base64
μμ κ°μ΄ μ΄λ€ μλΉμ€μ λν νμκ°μ μ μννκ±°λ λΉλ°λ²νΈ μ°ΎκΈ°μ κ°μ κΈ°λ₯μ μννμκ²½μ° μΈμ¦ κ΄λ ¨ λ©μΌμ΄ λ°μ‘λλ κ²μ μμ£Ό νμΈν μ μμ΅λλ€. κ·Έλ¬λ μμ κ°μ΄ μΈμ¦νμΈ λ²νΌμ ν΄λ¦νμλ μ΄λ ν λμμ νλμ§ κΆκΈνμμ§ μμΌμ κ°μ? μμ κ°μ μΈμ¦ λ²νΌμ λ§ν¬ μ리먼νΈλ‘ λμ΄μμΌλ©° μΌλ°μ μΈ GET μμ²μ λλ€. κ·Έλ¦¬κ³ κ·Έ URIμλ λ€μκ³Ό κ°μ μ΄λ ν ννμ λ¬Έμμ΄μ΄ ν¬ν¨λκ² λ©λλ€.
a2RldmtyQGdtYWlsLmNvbTp5Rm5iTUtrblZrRW85ckdxTVlmTGtWNE03UUtMTldXWg==
μμ κ°μ΄ ꡬμ±λ λ¬Έμμ΄μ Base64λ‘ μΈμ½λ©λ λ°μ΄ν°μ΄λ©° ν¬λ‘¬ κ°λ°μλꡬμ μ½μμ ν΅ν΄ μ΄ μμ€ν€ λ¬Έμμ΄μ λμ½λ©νλ©΄ λ€μκ³Ό κ°μ λ¬Έμμ΄ λ°μ΄ν°λ₯Ό νμΈν μ μμ΅λλ€.
atob("a2RldmtyQGdtYWlsLmNvbTp5Rm5iTUtrblZrRW85ckdxTVlmTGtWNE03UUtMTldXWg==")
'kdevkr@gmail.com:yFnbMKknVkEo9rGqMYfLkV4M7QKLNWWZ'
μ μ΄λ©μΌ μ£Όμμ ν¨κ» μ΄λ ν λ¬Έμμ΄μ ν¬ν¨νκ³ μμ΅λλ€. μλ§λ μ μμμλ λ¬Έμμ΄μ μνΈνλ μΈμ¦ μ λ³΄μΌ κ²μ λλ€. μΈμ¦ μ 보μ GET μμ²μ ν¬ν¨λ μ΄λ©μΌ μ£Όμκ° λμΌνμ§λ₯Ό λ΄λΆμ μΌλ‘ κ²μ¦νκ² μ£ . μ΄λ¬ν μΈμ¦ μ 보λ₯Ό μ Base64λ‘ μΈμ½λ©νμ¬ μ μ‘νκ² λλ κ²μΌκΉμ? μμ ν ννλ‘ λ°μ΄ν°λ₯Ό μ λ¬νκ³ μνλ λͺ©μ μ μμ΅λλ€.
μμ€ν€ μ½λ
μ¬λλ€μ μ λ§μ λ¬Έμμ ννλ₯Ό μ½κ³ ꡬλΆν μ μμ§λ§ 0κ³Ό 1λ‘ μ΄λ£¨μ΄μ§ μ»΄ν¨ν° μμ€ν μ μμ€ν μ λ°λΌ 0κ³Ό 1μ μ½κ³ ꡬλΆνλ λ°©μμ΄ λ€λ₯Ό μ μμ΅λλ€. μμ€ν μ λ°μ μ λ°λΌ μμ€ν€ μ½λλΆν° μ λμ½λ κ·Έλ¦¬κ³ μ¬λ¬κ°μ§ λ¬Έμ μ‘°ν©μ΄ νμ₯λκ³ μμ΅λλ€. λλΆλΆμ λ¬Έμ νμμ μμ€ν€ μ½λλ₯Ό κΈ°μ΄λ‘ λ§λ€μ΄μ§κΈ° λλ¬Έμ μμ€ν€ μ½λ μ€ μΌλΆ λ¬Έμ μ§ν©μ κ±°μ λͺ¨λ μμ€ν μμ 곡ν΅μΌλ‘ μ¬μ©λλ λ¬Έμμ λλ€. κ·Έλ¬ν λ¬Έμλ€μ λͺ¨μ λ§λ€μ΄μ§λκ² Base64 μΈμ½λ©μ λλ€.
Base64 μ΄λ―Έμ§
λΈλΌμ°μ μμλ λ°μ΄λ리 λ°μ΄ν° λΏλ§ μλλΌ Base64λ‘ μ΄λ£¨μ΄μ§ μ΄λ―Έμ§ λ°μ΄ν°λ₯Ό ννν μ μμ΅λλ€.
<img data-src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAAAXNSR0IArs4c6QAAA+VJREFUeF7tnclu4zAUBEf//9EeYG6SAhUKTdJUpnMV1663kbKd4/P5fP70bxsFjgLZhsW/hRTIXjwKZDMeBVIguymw2XqaQwpkMwU2Ww56yHEcS5d8PRZd56djU9p+9mZx/XQOKZCxiAoELiK+bXBX3A1ZXw7JMRByOevgFPNTC6b10vx2PzeBL8BxPTaH0IB2AyRIgVwUJcEsAGtBBVIgqY2d+luD1kmdzgm0G+pPIdF6jB2P1jd9f2kOSQXSFiSrogIBEyILtAJai52dw+L91UPOV0MkqDUAHQHeBsRaOAlIgi0PyQVSD4nKwnoIHP1Xu3SBfBkIxfgUEI2/2uC2PxiSYAVyeb8w24IKRN5lFchZMDrH4ME3LXupzqfn5AH2+XU+FEC+r6D9xCG0QJ7PIRZAgcBlYz1EmpQNSRSj/7uQJfXWzUnw2c/1gmUH9FibQ+T8uvlswWl8vWDZoUAG3zRI/W/NC+S3AUktIu1PST8tM9P1je6Pd1mjJ7TjFYhVbHL7ApkssB2+QOBykQTFKkKerNPLS8oxtJ/0oKn7jz6HFMjzF5xQnwJxPoKCyghw8+ACeTkQunqwFmTHG53kR49HOQv1sR5iBbQLJIHo+ej57Hhx+wJxL6hGG0ScQ+ohkwFaD6G62p4baDxKuWSxuz+PPYQELJDz78GRQRQIfK7MhmQSnJ4XyNuBUBlnQxjV4TZnUPt0Ptr/8PEpqdOCCmTsb4jqF1SUtG0MJgu3BkEGYuej+eshg7+FawHZJK3Hp5A1egGph5EH0Pir+1sPwpBVIM82PjpEF8ji77tQCCuQtwEhorOfz84JFOPT+a0+6CF2wNHtU0Gof4FIYiRoWjUVSIE8KoAhy1qo1PvWPLXYtAxN9xvPbw+GqeDUv0BAgdRiCADlALpLov72YJvutx5yIRILIu/KhhuEDVkUUqxHkAXTc/KgFNDy8QvEvc8gA6HnZLC6yqqHuB88s3oViPyvgeQB9Hy6h9iqZHVMtzkABQu/REoeE3tIgTx/DouqsJvBpEm9QArkZFQ2Ztv2NuSRgf66kDVaUAopJDDlHALw+pBVIGFVYS2QLKpACoSi0uNzMrDXhSyK4bRh8igaP6LxQ2dc7+5lLwmGGxzs4SkgXG+BfPc/mTZkhZ/D2t5D0gXaGD/6LowOfrQ/CkHUf7iH2AlJACs4AbXro5xFZbydr0BAsQKRVZD1IGuxrwNiN2jbW8GtgGnIsSFSt7dlrxXYti+QzT+XRRZWD7EmL9vXQ0YX0hJAm58VwHfqFWytAgWyVm+crUBQorUNCmSt3jhbgaBEaxsUyFq9cbYCQYnWNvgLqC4vPjN7siAAAAAASUVORK5CYII=" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAAAXNSR0IArs4c6QAAA+VJREFUeF7tnclu4zAUBEf//9EeYG6SAhUKTdJUpnMV1663kbKd4/P5fP70bxsFjgLZhsW/hRTIXjwKZDMeBVIguymw2XqaQwpkMwU2Ww56yHEcS5d8PRZd56djU9p+9mZx/XQOKZCxiAoELiK+bXBX3A1ZXw7JMRByOevgFPNTC6b10vx2PzeBL8BxPTaH0IB2AyRIgVwUJcEsAGtBBVIgqY2d+luD1kmdzgm0G+pPIdF6jB2P1jd9f2kOSQXSFiSrogIBEyILtAJai52dw+L91UPOV0MkqDUAHQHeBsRaOAlIgi0PyQVSD4nKwnoIHP1Xu3SBfBkIxfgUEI2/2uC2PxiSYAVyeb8w24IKRN5lFchZMDrH4ME3LXupzqfn5AH2+XU+FEC+r6D9xCG0QJ7PIRZAgcBlYz1EmpQNSRSj/7uQJfXWzUnw2c/1gmUH9FibQ+T8uvlswWl8vWDZoUAG3zRI/W/NC+S3AUktIu1PST8tM9P1je6Pd1mjJ7TjFYhVbHL7ApkssB2+QOBykQTFKkKerNPLS8oxtJ/0oKn7jz6HFMjzF5xQnwJxPoKCyghw8+ACeTkQunqwFmTHG53kR49HOQv1sR5iBbQLJIHo+ej57Hhx+wJxL6hGG0ScQ+ohkwFaD6G62p4baDxKuWSxuz+PPYQELJDz78GRQRQIfK7MhmQSnJ4XyNuBUBlnQxjV4TZnUPt0Ptr/8PEpqdOCCmTsb4jqF1SUtG0MJgu3BkEGYuej+eshg7+FawHZJK3Hp5A1egGph5EH0Pir+1sPwpBVIM82PjpEF8ji77tQCCuQtwEhorOfz84JFOPT+a0+6CF2wNHtU0Gof4FIYiRoWjUVSIE8KoAhy1qo1PvWPLXYtAxN9xvPbw+GqeDUv0BAgdRiCADlALpLov72YJvutx5yIRILIu/KhhuEDVkUUqxHkAXTc/KgFNDy8QvEvc8gA6HnZLC6yqqHuB88s3oViPyvgeQB9Hy6h9iqZHVMtzkABQu/REoeE3tIgTx/DouqsJvBpEm9QArkZFQ2Ztv2NuSRgf66kDVaUAopJDDlHALw+pBVIGFVYS2QLKpACoSi0uNzMrDXhSyK4bRh8igaP6LxQ2dc7+5lLwmGGxzs4SkgXG+BfPc/mTZkhZ/D2t5D0gXaGD/6LowOfrQ/CkHUf7iH2AlJACs4AbXro5xFZbydr0BAsQKRVZD1IGuxrwNiN2jbW8GtgGnIsSFSt7dlrxXYti+QzT+XRRZWD7EmL9vXQ0YX0hJAm58VwHfqFWytAgWyVm+crUBQorUNCmSt3jhbgaBEaxsUyFq9cbYCQYnWNvgLqC4vPjN7siAAAAAASUVORK5CYII=" data-loaded="true">
μΉν©μ url-loaderλ μμ κ°μ Base64 νμμ URIλ‘ λ³νν©λλ€.
HTTP κΈ°λ³Έ μΈμ¦
μ¬μ©μ μ΄λ¦κ³Ό λΉλ°λ²νΈλ₯Ό Authorization ν€λμ ν¬ν¨νμ¬ μ λ¬νλ HTTP κΈ°λ³Έ μΈμ¦μ κ²½μ°μλ Base64 μΈμ½λ©μ μ¬μ©ν©λλ€. μ΄λ HTTP ν€λμ κ°μ΄ μμ€ν€ μ½λλ‘ μΈμ½λ©λμ΄μΌνκΈ° λλ¬Έμ λλ€. λ°λΌμ, μμ€ν€ μ½λλ‘ ννν μ μλ λ°μ΄ν°λ μ λ¬ν μ μλλ‘ Base64 μΈμ½λ©μ μ¬μ©νλ κ²μ λλ€.
Authorization: Basic bWFtYm86cGFzc3dvcmQ=
JWT Base64Url
μ΅κ·Ό μ¬μ©μ μΈμ¦μ μν΄ λ§μ΄ λμ νλ JWT(JSON Web Token)λ νμ΄λ‘λμ μκ·Έλμ² λΆλΆμ Base64Url(URL Safe Base64) λ‘ μΈμ½λ©ν©λλ€. JWTλ₯Ό Base64λ‘ μΈμ½λ©νλ μ΄μ λ ν ν°μ΄ URL νλΌλ―Έν°λ‘ μ μ‘λ μ μκΈ° λλ¬Έμ λλ€.
λλ§μΉλ©°
Base64λ₯Ό μ¬μ©νλ μ΄μ μ λν΄μ κ°λ¨νκ² μμ보μμ΅λλ€. μ΄λ³΄ κ°λ°μλΆλ€ λΏλ§ μλλΌ μ μ²λΌ Base64μ λν΄μ μΈμ§νκ³ μμλ λΆλ€μκ²λ λμμ΄ λμμΌλ©΄ ν©λλ€. κ°μ¬ν©λλ€.
Base64μ λν΄μ μμΈν λ΄μ©μ μκ³ μΆλ€λ©΄ RFC4648μ μ°Έκ³ νμΈμ.