<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>impact7608 님의 블로그</title>
    <link>https://impact7608.tistory.com/</link>
    <description>impact7608 님의 블로그 입니다.</description>
    <language>ko</language>
    <pubDate>Sat, 4 Apr 2026 07:12:53 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>impact7608</managingEditor>
    <item>
      <title>25/01/24 TIL(17주차 금요일)</title>
      <link>https://impact7608.tistory.com/248</link>
      <description>&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;비밀번호 변경 기능 Issue&lt;/b&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;모든 요청에 대해 성공 상태(HTTP 200)가 반환됨&lt;/b&gt;: 성공과 실패를 구분하지 못함.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;기능 작동 실패&lt;/b&gt;: JSON 응답 처리 도중 비밀번호 변경이 제대로 작동하지 않음.&lt;/li&gt;
&lt;/ol&gt;
문제 원인 분석
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;form_valid와 form_invalid 메서드에서 JSON 응답을 반환하며 Django 기본 PasswordChangeView의 처리 과정을 제대로 상속하지 않았음.&lt;/li&gt;
&lt;li&gt;form_valid에서 기본 구현을 호출하지 않아 비밀번호 변경 로직이 동작하지 않았음.&lt;/li&gt;
&lt;li&gt;인증되지 않은 사용자의 요청을 처리하지 못함.&lt;/li&gt;
&lt;li&gt;기본 Django의 비밀번호 변경기능을 불러오는 super()로직이 포함 되었어야함&lt;/li&gt;
&lt;/ul&gt;
해결 방안 및 코드 수정
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;form_valid와 form_invalid에서 Django 기본 구현을 호출한 뒤, 적절한 JSON 응답을 반환하도록 수정.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;2. 인증 상태 확인 및 처리&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;dispatch 메서드를 오버라이드하여 인증되지 않은 사용자 요청에 대해 명확한 HTTP 401 상태와 메시지 반환.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;3. HTTP 상태 코드 사용&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;성공(200)과 실패(400)에 적절한 HTTP 상태 코드를 설정.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;4. 기본 Django의 비밀번호 변경기능 불러오기&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;super()로직 포함&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;&amp;lt;코드 변천사&amp;gt;&lt;/b&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;기존 코드 : 비밀번호 변경기능은 동작하나 여러가지 실패상황에 대한 상태도 200성공 상태가 반환 되는 문제가 있었음.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;class CustomPasswordChangeView(PasswordChangeView):
    template_name = 'profile.html'
    success_url = reverse_lazy('login')  # 로그인 페이지로 리디렉션

    def form_valid(self, form):
        # 성공 메시지 추가
        messages.success(self.request, &quot;비밀번호가 성공적으로 변경되었습니다. 다시 로그인해주세요.&quot;)
        return super().form_valid(form)

    def form_invalid(self, form):
        # 실패 메시지 추가
        messages.error(self.request, &quot;비밀번호 변경에 실패했습니다. 입력 정보를 확인해주세요.&quot;)
        return super().form_invalid(form)
&lt;/code&gt;&lt;/pre&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;수정 코드 :&lt;/b&gt; CustomPasswordChangeView의 초기 구현은 Django 기본 PasswordChangeView를 상속하여 비밀번호 변경 성공 및 실패 시 메시지를 추가하는 단순한 구조였습니다. 이후 JSON 형태로 클라이언트에 응답을 반환하기 위해 수정했지만, 비밀번호 변경 기능 자체가 작동하지 않는 문제가 발생했습니다.&lt;/li&gt;
&lt;/ol&gt;
원인 분석
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;Django 기본 로직 호출 누락&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;form_valid와 form_invalid 메서드에서 Django의 기본 PasswordChangeView 로직을 호출하는 super()가 생략되었습니다. 이로 인해 실제 비밀번호 변경이 이루어지지 않았습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;class CustomPasswordChangeView(PasswordChangeView):
    template_name = 'profile.html'
    success_url = reverse_lazy('login')

    def form_valid(self, form):
        messages.success(self.request, &quot;비밀번호가 성공적으로 변경되었습니다. 다시 로그인해주세요.&quot;)
        return JsonResponse({&quot;success&quot;: True, &quot;message&quot;: &quot;비밀번호가 성공적으로 변경되었습니다.&quot;})

    def form_invalid(self, form):
        errors = form.errors.as_json()
        return JsonResponse({&quot;success&quot;: False, &quot;errors&quot;: errors}, status=400)

&lt;/code&gt;&lt;/pre&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;최종 코드 :&lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;b&gt;기본 로직 유지&lt;/b&gt;
&lt;pre class=&quot;ebnf&quot;&gt;&lt;code&gt;PasswordChangeView
&lt;/code&gt;&lt;/pre&gt;
가 비밀번호 변경을 처리하도록를 호출하며, 이를 바탕으로 추가적인 JSON 응답을 구현.트러블슈팅 결과
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;비밀번호 변경 로직 복원&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;super().form_valid() 및 super().form_invalid() 호출로 Django 기본 기능이 정상적으로 작동.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;JSON 응답과 HTTP 상태 코드 개선&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;클라이언트가 서버 응답을 명확히 이해할 수 있도록 JSON 메시지와 HTTP 상태 코드를 통합.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;유연하고 유지보수 가능한 코드&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;확장 가능성이 높은 구조로 작성되어 추가 요구사항에도 쉽게 대응 가능.&lt;/li&gt;
&lt;/ol&gt;
교훈
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;기존 로직 보존의 중요성&lt;/b&gt;: 기본 동작을 무조건 대체하기보다는 필요한 부분만 확장하거나 덮어쓰는 방식이 안전함.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;명확한 통신 규약&lt;/b&gt;: 클라이언트와 서버 간의 의사소통을 위해 HTTP 상태 코드와 메시지를 활용하는 것이 중요.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;테스트의 필요성&lt;/b&gt;: 코드 수정 후 발생할 수 있는 예기치 않은 오류를 방지하기 위해 유닛 테스트와 통합 테스트가 필수&lt;/li&gt;
&lt;li&gt;대부분의 실수가 urls.py에서 발생했었음. urls.py의 기본 구조 학습이 더 필요함.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;class CustomPasswordChangeView(PasswordChangeView): template_name = 'profile.html' success_url = reverse_lazy('login') # 로그인 페이지로 리디렉션 def form_valid(self, form): # 비밀번호 변경 성공 시 기본 동작 유지 response = super().form_valid(form) # 추가: 상태 코드와 JSON 응답 반환 return JsonResponse({&quot;message&quot;: &quot;비밀번호가 성공적으로 변경되었습니다.&quot;}, status=200) def form_invalid(self, form): # 비밀번호 변경 실패 시 기본 동작 유지 super().form_invalid(form) # 추가: 상태 코드와 JSON 응답 반환 return JsonResponse( {&quot;message&quot;: &quot;비밀번호 변경에 실패했습니다. 입력 정보를 확인해주세요.&quot;}, status=400, ) def dispatch(self, request, *args, **kwargs): # 인증되지 않은 사용자 처리 if not request.user.is_authenticated: return JsonResponse({&quot;message&quot;: &quot;인증되지 않은 사용자입니다.&quot;}, status=401) return super().dispatch(request, *args, **kwargs)&lt;/li&gt;
&lt;li&gt;super()&lt;/li&gt;
&lt;li&gt;Django의&lt;/li&gt;
&lt;li&gt;&lt;b&gt;1. 기본 동작 유지하면서 JSON 응답 추가&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;기존 CustomPasswordChangeView 구현은 비밀번호 변경 성공 또는 실패 여부를 사용자에게 JSON 형태로 명확히 전달하여 상태에 따라 다른 동작을 구현할 계획이었습니다. 그러나 아래와 같은 문제가 발생했습니다:&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>AI 본캠프/TIL</category>
      <author>impact7608</author>
      <guid isPermaLink="true">https://impact7608.tistory.com/248</guid>
      <comments>https://impact7608.tistory.com/248#entry248comment</comments>
      <pubDate>Fri, 24 Jan 2025 21:52:56 +0900</pubDate>
    </item>
    <item>
      <title>24/01/23 TIL(17주차 목요일)</title>
      <link>https://impact7608.tistory.com/247</link>
      <description>&lt;div style=&quot;background-color: #1f1f1f; color: #cccccc;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;!&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;DOCTYPE&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;lang&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;ko&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;head&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;meta&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;charset&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;UTF-8&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;meta&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;viewport&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;width=device-width, initial-scale=1.0&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;사용자 프로필&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;rel&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;stylesheet&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;&lt;a href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css&quot;&gt;https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css&lt;/a&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;head&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; {% if user.is_authenticated %}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;container mt-5&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mb-4&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;사용자 프로필&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;&amp;lt;!-- 메시지 출력 --&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {% if messages %}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {% for message in messages %}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;alert alert-{{ message.tags }} alert-dismissible fade show&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;role&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;alert&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {{ message }}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;button&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;btn-close&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;data-bs-dismiss&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;alert&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;aria-label&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;Close&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {% endfor %}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {% endif %}&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;&amp;lt;!-- 사용자 정보 --&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;card mb-4&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;card-body&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;h5&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;card-title&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;사용자 정보&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;h5&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;card-text&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;아이디: {{ request.user.username }}&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;card-text&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;이메일: {{ request.user.email }}&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;&amp;lt;!-- 비밀번호 변경 --&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;card mb-4&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;card-body&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;h5&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;card-title&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;비밀번호 변경&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;h5&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;form&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;password-change-form&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;method&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;post&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;action&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;{% url 'password_change' %}&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {% csrf_token %}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mb-3 position-relative&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;id_old_password&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;form-label&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;현재 비밀번호&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;input&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;password&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;old_password&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;id_old_password&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;form-control&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;required&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;button&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;btn btn-sm btn-outline-secondary position-absolute top-50 end-0 translate-middle-y&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;onclick&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;togglePasswordVisibility&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;('id_old_password')&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; ️&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mb-3 position-relative&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;id_new_password1&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;form-label&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;새 비밀번호&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;input&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;password&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;new_password1&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;id_new_password1&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;form-control&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;required&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;small&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;form-text text-muted&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;7자 이상, 숫자와 문자를 포함해야 합니다.&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;small&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;button&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;btn btn-sm btn-outline-secondary position-absolute top-50 end-0 translate-middle-y&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;onclick&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;togglePasswordVisibility&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;('id_new_password1')&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; ️&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mb-3 position-relative&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;id_new_password2&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;form-label&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;새 비밀번호 확인&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;input&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;password&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;new_password2&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;id_new_password2&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;form-control&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;required&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;button&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;btn btn-sm btn-outline-secondary position-absolute top-50 end-0 translate-middle-y&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;onclick&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;togglePasswordVisibility&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;('id_new_password2')&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; ️&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;submit&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;btn btn-primary w-100&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;비밀번호 변경&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;form&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;// 비밀번호 가시성 토글 기능&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;togglePasswordVisibility&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;input&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;getElementById&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;input&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; === &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;password&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;input&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;text&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;input&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;password&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;// 비밀번호 변경 요청 처리&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;getElementById&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;password-change-form&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;submit&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;async&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;preventDefault&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(); &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;// 기본 폼 제출 방지&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;form&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;target&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;try&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;response&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;await&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;fetch&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;form&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;action&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;method&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;POST&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;headers&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;X-CSRFToken&quot;&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;querySelector&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'[name=csrfmiddlewaretoken]'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;FormData&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;form&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;),&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;response&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;ok&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;// 성공 시 alert 표시 후 로그아웃&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;alert&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;비밀번호가 성공적으로 변경되었습니다. 자동 로그아웃됩니다.&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;setTimeout&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(() &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;window&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;location&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;{% url 'login' %}&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;// 로그아웃 후 로그인 페이지로 이동&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }, &lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;2000&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;// 실패 시 alert 표시&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;alert&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;비밀번호 변경에 실패했습니다. 다시 시도해주세요.&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;catch&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;error&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;console&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;error&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;Fetch error:&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;error&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;alert&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;서버와의 통신 중 문제가 발생했습니다.&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; });&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;&amp;lt;!-- 로그아웃 --&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;card mb-4&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;card-body&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;h5&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;card-title&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;로그아웃&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;h5&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;form&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;logout-form&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;method&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;post&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;action&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;{% url 'logout' %}&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {% csrf_token %}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;submit&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;btn btn-secondary&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;로그아웃&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;form&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;getElementById&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;logout-form&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;submit&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;async&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;preventDefault&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(); &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;// 기본 폼 제출 방지&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;form&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;target&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;try&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;response&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;await&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;fetch&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;form&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;action&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;method&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;POST&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;headers&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;X-CSRFToken&quot;&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;querySelector&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'[name=csrfmiddlewaretoken]'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;response&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;ok&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;alert&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;로그아웃이 완료되었습니다.&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;// 팝업 메시지&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;window&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;location&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;{% url 'login' %}&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;// 로그인 페이지로 리다이렉트&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;alert&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;로그아웃 중 문제가 발생했습니다. 다시 시도해주세요.&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;catch&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;error&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;console&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;error&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;Fetch error:&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;error&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;alert&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;서버와의 통신 중 문제가 발생했습니다.&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; });&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;&amp;lt;!-- 회원 탈퇴 --&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;card mb-4&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;card-body&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;h5&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;card-title&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;회원 탈퇴&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;h5&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;form&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;delete-account-form&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;method&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;post&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;action&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;/account/delete-account/&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {% csrf_token %}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;submit&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;btn btn-danger&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;회원 탈퇴&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;form&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;getElementById&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;delete-account-form&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;submit&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;async&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;preventDefault&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;();&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;form&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;target&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;try&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;response&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;await&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;fetch&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;form&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;action&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;method&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;POST&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;headers&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;X-CSRFToken&quot;&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;querySelector&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'[name=csrfmiddlewaretoken]'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;contentType&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;response&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;headers&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;content-type&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;contentType&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &amp;amp;&amp;amp; &lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;contentType&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;includes&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;application/json&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)) {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;await&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;response&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;json&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;();&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;alert&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;message&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;window&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;location&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;/login/&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;alert&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;서버 응답 형식이 올바르지 않습니다.&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; } &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;catch&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;error&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;console&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;error&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;Fetch error:&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;error&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;alert&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;서버와의 통신 중 문제가 발생했습니다.&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;});&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; {% else %}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;window&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;location&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;{% url 'login' %}&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; {% endif %}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;&lt;a href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js&quot;&gt;https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js&lt;/a&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;getElementById&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'id_new_password1'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'input'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; () {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;password&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;message&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;password&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;length&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &amp;gt;= &lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; ? &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;사용 가능한 비밀번호입니다.&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; : &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;비밀번호는 최소 8자 이상이어야 합니다.&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;getElementById&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'password-feedback'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;textContent&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;message&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;</description>
      <author>impact7608</author>
      <guid isPermaLink="true">https://impact7608.tistory.com/247</guid>
      <comments>https://impact7608.tistory.com/247#entry247comment</comments>
      <pubDate>Thu, 23 Jan 2025 21:53:13 +0900</pubDate>
    </item>
    <item>
      <title>24/01/22 TIL(17주차 수요일) - html</title>
      <link>https://impact7608.tistory.com/246</link>
      <description>&lt;div style=&quot;background-color: #1f1f1f; color: #cccccc;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;!&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;DOCTYPE&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;lang&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;ko&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;head&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;meta&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;charset&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;UTF-8&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;meta&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;viewport&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;width=device-width, initial-scale=1.0&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;사용자 프로필&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;link&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;rel&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;stylesheet&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;&lt;a href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css&quot;&gt;https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css&lt;/a&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;head&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; {% if user.is_authenticated %}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;container mt-5&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mb-4&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;사용자 프로필&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;h1&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;&amp;lt;!-- 메시지 출력 --&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {% if messages %}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {% for message in messages %}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;alert alert-{{ message.tags }} alert-dismissible fade show&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;role&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;alert&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {{ message }}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;button&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;btn-close&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;data-bs-dismiss&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;alert&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;aria-label&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;Close&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {% endfor %}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {% endif %}&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;&amp;lt;!-- 사용자 정보 --&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;card mb-4&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;card-body&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;h5&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;card-title&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;사용자 정보&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;h5&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;card-text&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;아이디: {{ request.user.username }}&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;card-text&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;이메일: {{ request.user.email }}&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;&amp;lt;!-- 비밀번호 변경 --&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;card mb-4&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;card-body&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;h5&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;card-title&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;비밀번호 변경&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;h5&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;form&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;password-change-form&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {% csrf_token %}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mb-3&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;id_old_password&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;form-label&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;현재 비밀번호&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;input&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;password&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;old_password&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;id_old_password&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;form-control&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;required&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mb-3 position-relative&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;id_new_password1&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;form-label&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;새 비밀번호&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;input&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;password&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;new_password1&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;id_new_password1&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;form-control&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;required&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;small&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;form-text text-muted&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;8자 이상, 숫자 및 특수 문자를 포함해야 합니다.&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;small&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;button&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;btn btn-sm btn-outline-secondary position-absolute top-50 end-0 translate-middle-y&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;onclick&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;togglePasswordVisibility&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;('id_new_password1')&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; ️&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;mb-3 position-relative&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;id_new_password2&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;form-label&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;새 비밀번호 확인&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;input&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;password&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;name&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;new_password2&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;id_new_password2&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;form-control&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;required&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;button&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;btn btn-sm btn-outline-secondary position-absolute top-50 end-0 translate-middle-y&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;onclick&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;togglePasswordVisibility&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;('id_new_password2')&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; ️&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;submit&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;btn btn-primary w-100&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;비밀번호 변경&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;form&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;getElementById&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;password-change-form&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;submit&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;preventDefault&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(); &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;// 기본 폼 제출 방지&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;form&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;event&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;target&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;formData&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;FormData&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;form&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;fetch&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;{% url 'password_change' %}&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;method&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;POST&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;headers&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;X-CSRFToken&quot;&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;querySelector&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'[name=csrfmiddlewaretoken]'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;formData&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; })&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; .&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;then&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;response&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; (!&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;response&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;ok&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;// 응답 상태가 실패일 경우 에러 처리&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;response&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;json&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;().&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;then&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;errorData&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;throw&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Error&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;JSON&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;stringify&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;errorData&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;errors&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;));&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;response&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;json&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(); &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;// JSON 응답 처리&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; })&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; .&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;then&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; (&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;success&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;alert&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;message&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;// 성공 메시지&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;window&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;location&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;{% url 'profile' %}&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;// 성공 시 리다이렉트&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; } &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;alert&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;비밀번호 변경에 실패했습니다. 다시 시도해 주세요.&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;console&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;error&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;Errors:&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;errors&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;// 서버에서 반환된 에러 로그&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; })&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; .&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;catch&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;error&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;console&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;error&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;Error details:&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;error&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;alert&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;서버와의 통신 중 문제가 발생했습니다. 다시 시도해 주세요.&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;); &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;// 실패 시 표시할 메시지&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; });&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;});&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;&amp;lt;!-- 로그아웃 --&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;card mb-4&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;card-body&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;h5&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;card-title&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;로그아웃&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;h5&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;form&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;method&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;post&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;action&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;{% url 'logout' %}&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {% csrf_token %}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;submit&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;btn btn-secondary&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;로그아웃&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;form&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;&amp;lt;!-- 계정 삭제 --&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;card mb-4&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;card-body&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;h5&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;card-title&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;회원 탈퇴&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;h5&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;form&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;method&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;post&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;action&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;{% url 'delete_account' %}&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {% csrf_token %}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;submit&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;btn btn-danger&quot;&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;onclick&lt;/span&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;confirm&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;('정말 탈퇴하시겠습니까? 이 작업은 되돌릴 수 없습니다.')&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 회원 탈퇴&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;button&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;form&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; {% else %}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;window&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;location&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;href&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;{% url 'login' %}&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; {% endif %}&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;src&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;&lt;a href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js&quot;&gt;https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js&lt;/a&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;// 비밀번호 가시성 토글 기능&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;togglePasswordVisibility&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;inputId&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;passwordField&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;getElementById&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;inputId&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;);&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;passwordField&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;passwordField&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;type&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; === &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;password&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; ? &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;text&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; : &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;password&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #cccccc;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;getElementById&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'id_new_password1'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;addEventListener&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'input'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; () {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;password&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;value&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;message&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;password&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;length&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &amp;gt;= &lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; ? &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;사용 가능한 비밀번호입니다.&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; : &lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;비밀번호는 최소 8자 이상이어야 합니다.&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;getElementById&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;'password-feedback'&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;).&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;textContent&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #4fc1ff;&quot;&gt;message&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; });&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;script&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;color: #808080;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>AI 본캠프/TIL</category>
      <author>impact7608</author>
      <guid isPermaLink="true">https://impact7608.tistory.com/246</guid>
      <comments>https://impact7608.tistory.com/246#entry246comment</comments>
      <pubDate>Wed, 22 Jan 2025 22:51:09 +0900</pubDate>
    </item>
    <item>
      <title>24/01/21 TIL(17주차 화요일) - react</title>
      <link>https://impact7608.tistory.com/245</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;리액트(React)는 웹 사이트나 웹 애플리케이션을 만들 때 사용하는 JavaScript 라이브러리입니다. 리액트는 사용자 인터페이스(UI)를 쉽게 만들고, 관리할 수 있게 도와줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 코드는 리액트를 사용하여 웹 페이지에 텍스트와 제목을 표시하는 예시입니다. 그럼 하나씩 설명해볼게요!&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. &lt;b&gt;리액트 컴포넌트(React Component)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리액트에서 웹 페이지는 **컴포넌트(Component)**라는 작은 조각들로 이루어집니다. 컴포넌트는 HTML을 작성하는 템플릿 같은 역할을 합니다. 예를 들어, 위 코드에서 App은 하나의 컴포넌트입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. &lt;b&gt;import (컴포넌트 가져오기)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리액트에서는 다른 파일에 있는 기능을 사용하려면 &lt;b&gt;import&lt;/b&gt; 키워드를 사용해야 합니다. 예를 들어:&lt;/p&gt;
&lt;pre id=&quot;code_1737469139616&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import { MantineProvider, Flex, Text, Title } from '@mantine/core';&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 코드는 @mantine/core라는 외부 라이브러리에서 **MantineProvider, Flex, Text, Title**이라는 컴포넌트를 가져오는 코드입니다. 이 컴포넌트들은 웹 페이지를 꾸미는 데 유용합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. &lt;b&gt;MantineProvider (전역 설정)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MantineProvider는 Mantine 라이브러리의 기본 스타일이나 설정을 전체 페이지에 적용할 수 있게 해주는 컴포넌트입니다. 예를 들어, 글씨의 색이나 크기 같은 스타일을 일괄적으로 적용할 수 있습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. &lt;b&gt;Flex (배치 방법 설정)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Flex는 자식 컴포넌트들을 배치할 때 사용하는 컴포넌트입니다. 이 코드는 Flex dir=&quot;column&quot;이라고 설정되어 있는데, dir=&quot;column&quot;은 자식 컴포넌트들이 &lt;b&gt;세로로 정렬&lt;/b&gt;되도록 만든다는 뜻입니다. 기본적으로는 가로로 정렬되는데, 이 코드는 세로로 쌓이게 만듭니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. &lt;b&gt;Text (텍스트 표시)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Text는 화면에 텍스트를 표시할 때 사용하는 컴포넌트입니다. 위 코드에서는 Text 안에 &quot;This is my example&quot;이라는 문구가 들어가 있습니다. 이 부분은 화면에 보이는 글씨가 될 것입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;6. &lt;b&gt;Title (제목 표시)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Title은 제목을 표시하는 컴포넌트입니다. 예를 들어, 페이지의 제목을 크고 굵게 표시할 때 사용됩니다. order={1}은 제목의 크기를 지정하는데, 1은 가장 큰 제목을 의미합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;코드 수정 내용&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원래 코드에서는 Title을 가져오지 않았기 때문에 오류가 나고, Flex와 Text가 제대로 닫히지 않아서 문제가 있었습니다. 그래서 올바르게 고친 코드는 다음과 같습니다:&lt;/p&gt;
&lt;pre id=&quot;code_1737469156639&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import logo from './logo.svg';
import './App.css';
import { MantineProvider, Flex, Text, Title } from '@mantine/core';  // Title도 추가해야 함

function App() {
  return (
    &amp;lt;MantineProvider&amp;gt;
      {/* dir='column' -&amp;gt; 위에서 아래로 정렬 */}
      &amp;lt;Flex dir=&quot;column&quot;&amp;gt;
        {/* Text -&amp;gt; 일반 글씨 */}
        &amp;lt;Text&amp;gt;This is my example&amp;lt;/Text&amp;gt;
        {/* Title 추가 예시 */}
        &amp;lt;Title order={1}&amp;gt;This is a title&amp;lt;/Title&amp;gt; {/* Title 컴포넌트도 예시로 추가 */}
      &amp;lt;/Flex&amp;gt;
    &amp;lt;/MantineProvider&amp;gt;
  );
}

export default App;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;중요한 부분:&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;import&lt;/b&gt;: 다른 파일이나 라이브러리에서 컴포넌트를 가져오는 명령어입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;MantineProvider&lt;/b&gt;: Mantine 라이브러리의 스타일과 설정을 적용하는 컴포넌트입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Flex&lt;/b&gt;: 자식 컴포넌트들이 세로로 정렬되도록 해주는 컴포넌트입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Text&lt;/b&gt;: 화면에 텍스트를 표시하는 컴포넌트입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Title&lt;/b&gt;: 제목을 표시하는 컴포넌트입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;리액트 기본 개념 정리&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;컴포넌트(Component)&lt;/b&gt;: 리액트 앱에서 화면을 만드는 작은 단위입니다. 컴포넌트는 HTML처럼 보이지만, 동적이고 재사용 가능한 코드 조각입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;JSX&lt;/b&gt;: 리액트에서 HTML을 JavaScript처럼 사용하도록 도와주는 문법입니다. &amp;lt;Text&amp;gt;This is my example&amp;lt;/Text&amp;gt; 같은 코드는 JSX입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;상태(State)&lt;/b&gt;: 리액트에서는 데이터를 상태(state)로 관리합니다. 상태가 변경되면 리액트는 자동으로 화면을 업데이트합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;props&lt;/b&gt;: 부모 컴포넌트가 자식 컴포넌트에 데이터를 전달할 때 사용하는 방법입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리액트는 이렇게 작은 컴포넌트들을 조합하여 더 큰 웹 애플리케이션을 만드는 데 아주 유용한 도구입니다!&lt;/p&gt;</description>
      <category>AI 본캠프/TIL</category>
      <author>impact7608</author>
      <guid isPermaLink="true">https://impact7608.tistory.com/245</guid>
      <comments>https://impact7608.tistory.com/245#entry245comment</comments>
      <pubDate>Tue, 21 Jan 2025 23:19:31 +0900</pubDate>
    </item>
    <item>
      <title>24/01/16 TIL(16주차 목요일) - 브랜치 pull시 주의사항</title>
      <link>https://impact7608.tistory.com/244</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;develop 브랜치를 최신화하고 Chan 브랜치와 동기화하려면 먼저 develop 브랜치로 이동한 후, git fetch origin으로 원격에서 최신 코드를 가져오고 git pull origin develop으로 브랜치를 최신 상태로 만든다. 이후 Chan 브랜치로 체크아웃하고, git merge develop을 실행하여 develop 브랜치의 내용을 병합하거나, git rebase develop을 사용하여 리베이스할 수 있다. 만약 충돌이 발생하면 충돌 파일을 수정하고 git add . 후, 병합 시에는 git commit을, 리베이스 시에는 git rebase --continue를 실행하여 충돌을 해결한다. 마지막으로, 병합 결과를 원격 저장소로 푸시하려면 git push origin Chan을 사용하고, 리베이스를 한 경우에는 git push origin Chan --force로 강제 푸시를 해야 한다. 이렇게 하면 develop 브랜치의 최신 상태를 반영한 Chan 브랜치가 완성된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. develop 브랜치 최신화&lt;/b&gt;&lt;br /&gt;develop 브랜치로 이동하여 최신 상태로 만든다.&lt;/p&gt;
&lt;pre id=&quot;code_1736994380997&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git checkout develop          # develop 브랜치로 체크아웃
git fetch origin              # 원격에서 최신 코드 가져오기
git pull origin develop       # 최신 상태로 병합&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2.&lt;/b&gt; &lt;b&gt;Chan 브랜치로 이동 및 동기화&lt;/b&gt;&lt;br /&gt;Chan 브랜치로 이동하여 develop 브랜치 내용을 병합하거나 리베이스한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;병합:&lt;/p&gt;
&lt;pre id=&quot;code_1736994430531&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git checkout Chan             # Chan 브랜치로 이동
git merge develop             # develop 브랜치 병합&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리베이스:&lt;/p&gt;
&lt;pre id=&quot;code_1736994439884&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git checkout Chan             # Chan 브랜치로 이동
git rebase develop            # develop 브랜치 리베이스&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 충돌 해결(필요 시)&lt;/b&gt;&lt;br /&gt;충돌이 발생하면 충돌 파일을 수정한 후:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;병합일 경우:&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1736994461332&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git add .
git commit&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리베이스일 경우:&lt;/p&gt;
&lt;pre id=&quot;code_1736994476659&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git rebase --continue&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4.&lt;b&gt;원격 저장소로 푸시&lt;/b&gt;&lt;br /&gt;동기화한 내용을 원격 저장소로 푸시한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;병합 : git&amp;nbsp;push&amp;nbsp;origin&amp;nbsp;Chan &lt;br /&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리베이스: git push origin Chan --force&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;requirements.txt에 있는 패키지들을 설치하려면 먼저 현재 디렉토리에 requirements.txt 파일이 있는지 확인한다. 파일이 있다면, 패키지 설치 전에 가상 환경(virtual environment)을 생성하고 활성화하는 것이 좋다. 가상 환경은 python -m venv venv 명령으로 생성할 수 있으며, Windows에서는 venv\Scripts\activate, macOS/Linux에서는 source venv/bin/activate로 활성화한다. 가상 환경 활성화 후, pip install -r requirements.txt 명령을 실행하면 파일에 명시된 패키지들이 설치된다. 설치가 완료되면 pip freeze 명령으로 설치된 패키지 목록을 확인할 수 있다. 만약 설치 중 에러가 발생하면 Python 버전을 확인하거나(python --version), pip를 최신 버전으로 업데이트(pip install --upgrade pip), 혹은 의존성 문제를 해결하여 에러를 처리한다.&lt;/p&gt;</description>
      <category>AI 본캠프/TIL</category>
      <author>impact7608</author>
      <guid isPermaLink="true">https://impact7608.tistory.com/244</guid>
      <comments>https://impact7608.tistory.com/244#entry244comment</comments>
      <pubDate>Thu, 16 Jan 2025 11:29:01 +0900</pubDate>
    </item>
    <item>
      <title>24/01/15 TIL(16주차 수요일)</title>
      <link>https://impact7608.tistory.com/243</link>
      <description>&lt;pre id=&quot;code_1736942024109&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from django.shortcuts import render
from django.http import JsonResponse, HttpResponse
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from .serializers import UserSerializer
from rest_framework_simplejwt.views import TokenObtainPairView
from django.shortcuts import redirect
from django.views import View
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
import json
from .llm import generate_chat_response
from langchain_openai import OpenAIEmbeddings




# Create your views here.

def index(request):
    return JsonResponse({'message': 'Hello, this is accounts app!'})


class RegisterView(APIView):
    def post(self, request):
        serializer = UserSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response({'message': 'User created successfully!'}, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)


class LoginView(TokenObtainPairView):
    pass

class InitialSetupPage(View):
    def get(self, request):
        return HttpResponse(&quot;Initial setup page loaded.&quot;)
    
def login_page(request):
    return render(request, 'login.html')

def login_redirect(request):
    return redirect('chatbot_page')

def register_page(request):
    return render(request, 'register.html')

def index(request):
    # 기본 경로에서 JSON 응답 반환
    return JsonResponse({'message': 'Hello, this is accounts app!'})

def chatbot_page(request):
    # /chatbot/ 경로에서 chatbot.html 템플릿 렌더링
    return render(request, 'chatbot.html')

@csrf_exempt
def chatbot_api(request):
    if request.method == &quot;POST&quot;:
        data = json.loads(request.body)
        user_message = data.get(&quot;message&quot;, &quot;&quot;)

        # 간단한 봇 응답 로직
        bot_response = f&quot;You said: {user_message}&quot;
        return JsonResponse({&quot;response&quot;: bot_response})
    return JsonResponse({&quot;error&quot;: &quot;Invalid request method&quot;}, status=400)

def friends_selection(request):
    # 등장인물 선택 화면 렌더링
    return render(request, 'friends_selection.html')

def chatbot_page(request):
    # URL 쿼리 파라미터에서 캐릭터 이름 가져오기
    character = request.GET.get('character', 'Default')
    return render(request, 'chatbot.html', {'character': character})

# 캐릭터 정보 (예제)
characters = {
    &quot;Rachel&quot;: &quot;I'm Rachel Green, your fashion guru!&quot;,
    &quot;Ross&quot;: &quot;Hi, I'm Ross Geller. Let's talk about science and love!&quot;,
    &quot;Monica&quot;: &quot;I'm Monica Geller, the perfectionist chef. Need tips?&quot;,
    &quot;Chandler&quot;: &quot;Chandler Bing here! Ready for some sarcasm?&quot;,
    &quot;Joey&quot;: &quot;Joey Tribbiani! 'How you doin'?'&quot;,
    &quot;Phoebe&quot;: &quot;Phoebe Buffay, quirky musician at your service.&quot;,
}

@csrf_exempt
def chatbot_api(request):
    if request.method == &quot;POST&quot;:
        data = json.loads(request.body)
        character_name = data.get(&quot;character&quot;, &quot;Default&quot;)  # 요청에서 캐릭터 이름 가져오기
        user_query = data.get(&quot;message&quot;, &quot;&quot;)  # 요청에서 사용자 메시지 가져오기

        try:
            # LLM의 generate_chat_response 호출 (캐릭터 이름과 메시지 전달)
            response = generate_chat_response(character_name, user_query)
            return JsonResponse({&quot;response&quot;: response})  # JSON 응답 반환
        except Exception as e:
            return JsonResponse({&quot;error&quot;: str(e)}, status=500)  # 예외 처리
    return JsonResponse({&quot;error&quot;: &quot;Invalid request method&quot;}, status=400)  # POST가 아닌 경우 처리&lt;/code&gt;&lt;/pre&gt;</description>
      <category>AI 본캠프/TIL</category>
      <author>impact7608</author>
      <guid isPermaLink="true">https://impact7608.tistory.com/243</guid>
      <comments>https://impact7608.tistory.com/243#entry243comment</comments>
      <pubDate>Wed, 15 Jan 2025 20:53:53 +0900</pubDate>
    </item>
    <item>
      <title>24/01/14 TIL(16주차 화요일) - Merge</title>
      <link>https://impact7608.tistory.com/242</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;1. 로컬 저장소 상태 확인&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1736856217066&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git stauts&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 변경사항이 없도록 클린 상태인지 확인해줘.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. develop 브랜치로 전환&lt;/p&gt;
&lt;pre id=&quot;code_1736856267898&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git checkout develop&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;병합할 대상 브랜치로 이동.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 최신상태로 업데이트&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1736856292241&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git pull origin develop&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;develop 브랜치를 최신 상태로 업데이트.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. Chan 브랜치를 병합&lt;/p&gt;
&lt;pre id=&quot;code_1736856311426&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git merge Chan&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Chan&amp;nbsp; 브랜치의 변경사항을 develop 브랜치에 병합.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. 병합 충돌 확인 및 해결&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 충돌이 발생하면, 충돌 파일들을 수정한 뒤 아래 명령어를 실행해&lt;/p&gt;
&lt;pre id=&quot;code_1736856347770&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git add &amp;lt;파일명&amp;gt;
git commit&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6. 병합 결과 푸시&lt;/p&gt;
&lt;pre id=&quot;code_1736856361202&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git push origin develop&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;병합된 develop 브랜치를 원격 저장소로 푸시.&lt;/p&gt;</description>
      <category>AI 본캠프/TIL</category>
      <author>impact7608</author>
      <guid isPermaLink="true">https://impact7608.tistory.com/242</guid>
      <comments>https://impact7608.tistory.com/242#entry242comment</comments>
      <pubDate>Tue, 14 Jan 2025 21:06:24 +0900</pubDate>
    </item>
    <item>
      <title>24/01/13 TIL(16주차 월요일)</title>
      <link>https://impact7608.tistory.com/241</link>
      <description>&lt;pre id=&quot;code_1736783517530&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain.schema import Document
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import FAISS
from langchain.text_splitter import CharacterTextSplitter
from django.conf import settings
import json



# .env 파일에서 환경 변수 로드
load_dotenv()
api_key = os.getenv(&quot;OPENAI_API_KEY&quot;)
if not api_key:
    raise ValueError(&quot;API 키가 .env 파일에 설정되어 있지 않습니다.&quot;)

embeddings = OpenAIEmbeddings()


def format_character_name(character_name):
    &quot;&quot;&quot;캐릭터 이름을 파일명에 맞게 포맷팅&quot;&quot;&quot;
    return character_name.strip().lower().replace(&quot; &quot;, &quot;_&quot;) + &quot;_prompt.txt&quot;


def load_character_prompt(character_name):
    &quot;&quot;&quot;캐릭터에 맞는 프롬프트를 파일에서 읽어오거나 기본값 반환&quot;&quot;&quot;
    try:
        file_path = os.path.join(
            os.path.dirname(os.path.abspath(__file__)),
            &quot;prompts&quot;,
            format_character_name(character_name),
        )
        with open(file_path, &quot;r&quot;, encoding=&quot;utf-8&quot;) as file:
            return file.read().strip()
    except FileNotFoundError:
        return f&quot;Hi, I am {character_name.capitalize()}. Let's talk!&quot;


def load_scripts(folder):
    &quot;&quot;&quot;폴더 내 텍스트 파일을 Document 리스트로 로드&quot;&quot;&quot;
    documents = []
    for root, _, files in os.walk(folder):
        for file in files:
            if file.endswith(&quot;.txt&quot;):
                with open(os.path.join(root, file), 'r', encoding='utf-8') as f:
                    content = f.read()
                    documents.append(Document(page_content=content))
    return documents


def prepare_vectorstore(documents):
    &quot;&quot;&quot;벡터스토어 준비&quot;&quot;&quot;
    splitter = CharacterTextSplitter(chunk_size=900, chunk_overlap=90)
    split_docs = splitter.split_documents(documents)
    vectorstore = FAISS.from_documents(split_docs, embeddings)
    return vectorstore.as_retriever(search_type=&quot;similarity&quot;, search_kwargs={&quot;k&quot;: 3})


# 캐릭터 클래스 정의
class Character:
    def __init__(self, name, age, job, hobbies, skills, personality, catchphrases, conversation_patterns, intro=None, relationships=None):
        self.name = name
        self.age = age
        self.job = job
        self.hobbies = hobbies
        self.skills = skills
        self.personality = personality
        self.catchphrases = catchphrases
        self.conversation_patterns = conversation_patterns
        self.intro = intro if intro else f&quot;Hello, I'm {name}!&quot;
        self.relationships = relationships if relationships else {}


def create_characters():
    return [
        Character(
            name=&quot;Rachel&quot;,
            age=28,
            job=&quot;Fashion Consultant&quot;,
            hobbies=[&quot;Shopping&quot;, &quot;Socializing&quot;, &quot;Traveling&quot;],
            skills=[&quot;Fashion sense&quot;, &quot;Styling&quot;, &quot;Branding&quot;],
            personality=&quot;Charming, fashionable, loyal, sometimes naive, and optimistic.&quot;,
            catchphrases=[&quot;'Could I BE any more...?'&quot;],
            conversation_patterns=[&quot;Gossipy&quot;, &quot;Supportive&quot;, &quot;Slightly dramatic&quot;],
            intro=&quot;Hey! I'm Rachel Green. I love fashion and shopping. Want to tell me your story?&quot;,
            relationships={&quot;Monica&quot;: &quot;Best friend&quot;, &quot;Ross&quot;: &quot;Romantic interest&quot;}
        ),
        Character(
        name=&quot;Monica&quot;,
        age=28,
        job=&quot;Chef&quot;,
        hobbies=[&quot;Cooking&quot;, &quot;Organizing&quot;, &quot;Playing with her nephews&quot;],
        skills=[&quot;Cooking&quot;, &quot;Cleaning&quot;, &quot;Organization&quot;],
        personality=&quot;Competitive, Organized, Caring, Slightly neurotic, and loves control.&quot;,
        catchphrases=[&quot;'Welcome to the real world! It sucks. You&amp;rsquo;re gonna love it!'&quot;],
        conversation_patterns=[&quot;Perfectionistic&quot;, &quot;Caring&quot;, &quot;Occasionally bossy&quot;],
        intro=&quot;Hey! I'm Monica Geller. I love cooking and cleaning. Creating a perfect world is my life's goal!&quot;,
        relationships={&quot;Rachel&quot;: &quot;Best friend&quot;, &quot;Chandler&quot;: &quot;Husband&quot;}
        ),
        Character(
        name=&quot;Chandler&quot;,
        age=28,
        job=&quot;Statistical Analysis and Data Reconfiguration&quot;,
        hobbies=[&quot;Sarcasm&quot;, &quot;Humor&quot;, &quot;Making jokes&quot;],
        skills=[&quot;Quick wit&quot;, &quot;Sarcasm&quot;, &quot;Self-deprecating humor&quot;],
        personality=&quot;Sarcastic, Witty, Self-deprecating, Slightly awkward, Endearing&quot;,
        catchphrases=[&quot;'Could I BE any more...?'&quot;],
        conversation_patterns=[&quot;Dry humor&quot;, &quot;Sarcastic&quot;, &quot;Joking&quot;, &quot;Self-criticism&quot;],
        intro=&quot;Could I BE any more excited to meet you? Nah, I didn&amp;rsquo;t think so.&quot;,
        relationships={&quot;Monica&quot;: &quot;Wife&quot;, &quot;Joey&quot;: &quot;Close friend&quot;}
        ),
        Character(
        name=&quot;Ross&quot;,
        age=29,
        job=&quot;Paleontologist&quot;,
        hobbies=[&quot;Dinosaurs&quot;, &quot;Science&quot;, &quot;Reading&quot;],
        skills=[&quot;Scientific knowledge&quot;, &quot;Teaching&quot;, &quot;Paleontology&quot;],
        personality=&quot;Intelligent, Sensitive, Often socially awkward, Can be jealous&quot;,
        catchphrases=[&quot;'We were on a break!'&quot;],
        conversation_patterns=[&quot;Analytical&quot;, &quot;Clumsy&quot;, &quot;Sometimes serious but also passionate&quot;],
        intro=&quot;Hi, I&amp;rsquo;m Ross. I&amp;rsquo;m a paleontologist... and yes, I love dinosaurs!&quot;,
        relationships={&quot;Rachel&quot;: &quot;Romantic interest&quot;, &quot;Monica&quot;: &quot;Sister&quot;, &quot;Chandler&quot;: &quot;Close friend&quot;}
        ),
        Character(
        name=&quot;Joey&quot;,
        age=27,
        job=&quot;Actor&quot;,
        hobbies=[&quot;Acting&quot;, &quot;Eating&quot;, &quot;Dating&quot;],
        skills=[&quot;Acting&quot;, &quot;Charm&quot;, &quot;Having a good time&quot;],
        personality=&quot;Fun-loving, Charming, Sometimes naive, a bit of a ladies' man&quot;,
        catchphrases=[&quot;'How you doin'?'&quot;],
        conversation_patterns=[&quot;Confident&quot;, &quot;Playful&quot;, &quot;Naive&quot;],
        intro=&quot;Hey! Joey Tribbiani here. I&amp;rsquo;m an actor... and I know how to have a good time!&quot;,
        relationships={&quot;Chandler&quot;: &quot;Best friend&quot;, &quot;Rachel&quot;: &quot;Ex-girlfriend&quot;}
        ),
        Character(
        name=&quot;Phoebe&quot;,
        age=28,
        job=&quot;Masseuse, Musician&quot;,
        hobbies=[&quot;Playing guitar&quot;, &quot;Singing&quot;, &quot;Yoga&quot;],
        skills=[&quot;Music&quot;, &quot;Singing&quot;, &quot;Positive energy&quot;],
        personality=&quot;Eccentric, Free-spirited, Optimistic, Kind-hearted&quot;,
        catchphrases=[&quot;'Smelly Cat, Smelly Cat, what are they feeding you?'&quot;],
        conversation_patterns=[&quot;Quirky&quot;, &quot;Optimistic&quot;, &quot;Often sings or makes strange comments&quot;],
        intro=&quot;Hi, I&amp;rsquo;m Phoebe Buffay. I play the guitar and I&amp;rsquo;m a total free spirit!&quot;,
        relationships={&quot;Monica&quot;: &quot;Best friend&quot;, &quot;Mike&quot;: &quot;Husband&quot;}
        )
]


def generate_chat_response(character_name, user_query, summary_threshold=500):
    &quot;&quot;&quot;챗봇 응답을 생성하는 함수&quot;&quot;&quot;
    # 캐릭터 생성 및 선택
    characters = create_characters()
    selected_character = next(
        (char for char in characters if char.name.lower() == character_name.lower()), None
    )
    if not selected_character:
        return f&quot;Character '{character_name}' not found.&quot;

    # 캐릭터 프롬프트 로드
    character_prompt = load_character_prompt(selected_character.name)

    # 캐릭터 프롬프트 생성 (캐릭터 클래스 포함)
    character_prompt = f&quot;&quot;&quot;
    You are {selected_character.name}, a {selected_character.job}. 
    Your personality: {selected_character.personality}.
    Your catchphrases: {&quot; | &quot;.join(selected_character.catchphrases)}.
    Your hobbies: {&quot;, &quot;.join(selected_character.hobbies)}.
    You are having a conversation with a friend. Be {&quot;, &quot;.join(selected_character.conversation_patterns)}.
    &quot;&quot;&quot;

    # 대본 데이터 로드
    script_docs = load_scripts(os.path.join(settings.BASE_DIR, &quot;whatsup&quot;, &quot;Friends_Scripts&quot;))

    # 벡터스토어 생성
    documents = [Document(page_content=character_prompt)] + script_docs
    vectorstore = prepare_vectorstore(documents)

    # 벡터스토어 검색
    search_results = vectorstore.get_relevant_documents(user_query)[:2]
    context = character_prompt + &quot;\n&quot; + &quot;\n&quot;.join(doc.page_content for doc in search_results)

    # ChatOpenAI 모델 생성 및 호출
    model = ChatOpenAI(model=&quot;gpt-4&quot;, openai_api_key=api_key, max_tokens=200,temperature=0,)
    messages = [{&quot;role&quot;: &quot;system&quot;, &quot;content&quot;: context}, {&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: user_query}]
    response = model.invoke(messages)

    return response.content&lt;/code&gt;&lt;/pre&gt;</description>
      <category>AI 본캠프/TIL</category>
      <author>impact7608</author>
      <guid isPermaLink="true">https://impact7608.tistory.com/241</guid>
      <comments>https://impact7608.tistory.com/241#entry241comment</comments>
      <pubDate>Tue, 14 Jan 2025 00:52:01 +0900</pubDate>
    </item>
    <item>
      <title>24/01/07 TIL(15주차 수요일) - 커밋</title>
      <link>https://impact7608.tistory.com/240</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;git &lt;span&gt;log&lt;/span&gt; --oneline&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;예제 출력:&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;abc1234 Fix typo in chatbot API&lt;/div&gt;
&lt;div&gt;def5678 Add chatbot page template&lt;/div&gt;
&lt;div&gt;ghi9012 Update README for installation guide&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;git reset --hard &amp;lt;commit_hash&amp;gt;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 특정 커밋으로 이동하기 (Detached HEAD 상태)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정 커밋으로 이동할 때는 HEAD를 해당 커밋으로 이동시켜. 이렇게 하면 &lt;b&gt;현재 브랜치의 상태를 바꾸지 않고&lt;/b&gt; 커밋 내용을 확인하거나 수정할 수 있어.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;bash&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span data-state=&quot;closed&quot;&gt;코드 복사&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;git checkout &amp;lt;커밋 해시&amp;gt;&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;lt;커밋 해시&amp;gt;는 git log 명령어를 통해 확인할 수 있어.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Detached HEAD 상태&lt;/b&gt;란 브랜치가 아닌 커밋에 직접 이동했을 때의 상태야. 이 상태에서 작업 후 커밋을 하면 새 브랜치로 관리해야 기존 브랜치에 영향을 주지 않아.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 특정 커밋으로 이동 후 브랜치로 작업 이어가기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Detached HEAD 상태로 작업하지 않고 &lt;b&gt;새 브랜치를 만들어 작업을 이어가고 싶다면&lt;/b&gt;:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;bash&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span data-state=&quot;closed&quot;&gt;코드 복사&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;git checkout -b &amp;lt;새로운 브랜치 이름&amp;gt; &amp;lt;커밋 해시&amp;gt;&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이 명령어는 특정 커밋을 기반으로 새 브랜치를 생성해서 그 브랜치로 바로 이동해.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 특정 커밋 상태로 돌아가 브랜치 덮어쓰기 (Reset)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;현재 브랜치를 특정 커밋으로 되돌리고 싶다면&lt;/b&gt; reset을 사용해.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;bash&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span data-state=&quot;closed&quot;&gt;코드 복사&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;git reset --hard &amp;lt;커밋 해시&amp;gt;&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;주의&lt;/b&gt;: --hard 옵션은 현재 브랜치의 변경사항이 모두 삭제되므로 꼭 필요한 경우에만 사용해!&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. 특정 커밋 이후로 되돌리기 (Revert)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;이전 커밋으로 돌아가되, 변경 내역은 보존하고 싶다면&lt;/b&gt; revert를 사용해.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;bash&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span data-state=&quot;closed&quot;&gt;코드 복사&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;git revert &amp;lt;커밋 해시&amp;gt;&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이 명령어는 지정된 커밋의 내용을 되돌리는 새로운 커밋을 생성해. 기존 작업 내역을 유지하면서 수정하는 방식이야.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. 브랜치를 특정 커밋으로 강제 이동 (Reset to Commit)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 브랜치를 특정 커밋으로 강제 이동시키고 싶다면:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;bash&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span data-state=&quot;closed&quot;&gt;코드 복사&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;git reset --hard &amp;lt;커밋 해시&amp;gt;&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;6. 특정 커밋에서 파일만 가져오기 (Cherry-pick)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정 커밋의 &lt;b&gt;변경 사항만 현재 브랜치에 적용&lt;/b&gt;하려면 cherry-pick을 사용해.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;bash&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span data-state=&quot;closed&quot;&gt;코드 복사&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;git cherry-pick &amp;lt;커밋 해시&amp;gt;&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;7. 작업 확인 후 원래 상태로 복원하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정 커밋으로 이동한 후 원래 상태로 돌아오고 싶다면:&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;bash&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span data-state=&quot;closed&quot;&gt;코드 복사&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;git checkout &amp;lt;브랜치 이름&amp;gt;&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;원래 작업하던 브랜치로 돌아가.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;  요약&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;커밋 확인만 &amp;rarr; git checkout &amp;lt;커밋 해시&amp;gt;&lt;/li&gt;
&lt;li&gt;커밋 기반으로 새 브랜치 생성 &amp;rarr; git checkout -b &amp;lt;브랜치 이름&amp;gt; &amp;lt;커밋 해시&amp;gt;&lt;/li&gt;
&lt;li&gt;브랜치 되돌리기 &amp;rarr; git reset --hard &amp;lt;커밋 해시&amp;gt;&lt;/li&gt;
&lt;li&gt;안전하게 되돌리기 &amp;rarr; git revert &amp;lt;커밋 해시&amp;gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>AI 본캠프/TIL</category>
      <author>impact7608</author>
      <guid isPermaLink="true">https://impact7608.tistory.com/240</guid>
      <comments>https://impact7608.tistory.com/240#entry240comment</comments>
      <pubDate>Wed, 8 Jan 2025 23:40:46 +0900</pubDate>
    </item>
    <item>
      <title>24/01/07 TIL(15주차 화요일)</title>
      <link>https://impact7608.tistory.com/239</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;aside&amp;gt;   &lt;b&gt;또다시 HTTP 이야기&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;H&lt;/b&gt;yper &lt;b&gt;T&lt;/b&gt;ext &lt;b&gt;T&lt;/b&gt;ransfer &lt;b&gt;P&lt;/b&gt;rotocol&lt;/li&gt;
&lt;li&gt;&amp;rArr; Web에서 이루어지는 **데이터 교환의 기초(**약속)입니다.&lt;/li&gt;
&lt;li&gt;요청(Request)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;클라이언트 &amp;rarr; 서버&lt;/b&gt;로 전송되는 메세지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;응답(Response)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;서버 &amp;rarr; 클라이언트&lt;/b&gt;로 전송되는 메세지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;특성
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Stateless (무상태)&lt;/b&gt;&amp;rarr; 모든 응답과 요청은 독립적입니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 서버가 클라이언트의 상태를 보존하지 않습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Connectless (비연결성)&lt;/b&gt;&amp;rarr; 연결을 유지하지 않으므로 서버 자원을 효율적으로 사용 가능합니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 이후 HTTP1.1이 등장하면서 개선되었습니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 요청 받고 응답을 주고나면 연결을 종료합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;&amp;rArr; 단순하며 확장성이 용이한 구조&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;/aside&amp;gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;HTTP Message&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;요청(Request)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트가 서버로 전달해서 서버의 어떤 행동(action)이 일어나게 하는 것을 의미합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;응답(Response)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 대한 서버의 답변을 의미합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Http Message의 구조&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청과 응답은 구조가 비슷합니다.&lt;/li&gt;
&lt;li&gt;시작(Start Line) - 실행되어야할 요청, 요청에 대한 성공 또는 실패&lt;/li&gt;
&lt;li&gt;HTTP Header - 요청에 대한 설명, 본문에 대한 설명&lt;/li&gt;
&lt;li&gt;빈줄(Blank Line) - 메타 정보의 끝을 알림&lt;/li&gt;
&lt;li&gt;HTTP Body - 요청과 관련된 내용, 응답과 관련된 문서&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;aside&amp;gt;   예시&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출처 : MDN&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;요청(Request)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Start Line
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Method, Traget, HTTP Version&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Headers
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 필요한 여러가지 메타 정보&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Body
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 필요한 여러가지 데이터&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;응답(Response)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Start Line
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HTTP Version, Status Code, Status Message&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Headers
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;응답에 대한 열가지 메타 정보&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Body
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청을 처리한 여러가지 데이터 &amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;HTTP Request Methods&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;aside&amp;gt; &amp;lt;img src=&quot;/icons/checkmark-square_red.svg&quot; alt=&quot;/icons/checkmark-square_red.svg&quot; width=&quot;40px&quot; /&amp;gt; MDN 공식문서 &lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/Methods&quot;&gt;https://developer.mozilla.org/ko/docs/Web/HTTP/Methods&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;/aside&amp;gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청 자원에 대한 &lt;b&gt;행위&lt;/b&gt;를 나타냅니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;어떤 동작을 하려고 하는지를 나타내요!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;GET, POST, PUT, DELETE, &amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;rarr; REST 이야기할 때 조금 더 알아보아요!&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;HTTP Status Code&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;aside&amp;gt; &amp;lt;img src=&quot;/icons/checkmark-square_red.svg&quot; alt=&quot;/icons/checkmark-square_red.svg&quot; width=&quot;40px&quot; /&amp;gt; MDN 공식 문서 &lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/Status&quot;&gt;https://developer.mozilla.org/ko/docs/Web/HTTP/Status&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;/aside&amp;gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HTTP 요청에 대해 &lt;b&gt;성공 여부를 나타내는 코드값&lt;/b&gt;입니다.&lt;/li&gt;
&lt;li&gt;크게 5개의 그룹으로 나누어집니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1XX : Informational Response&lt;/li&gt;
&lt;li&gt;2XX : Successful Response
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;성공 - 에러없이 요청이 성공.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020156_1&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/9cf77578-72f4-4a66-9fec-d6f7bdd31935/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청이 성공했고 새로운 데이터가 만들어짐.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020157_2&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/f81709dc-1871-4c0d-82bd-7b599b49d62b/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청은 정상적이나 아직 처리가 완료되지 않음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020157_3&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/bd260605-a321-43d8-aceb-8c6b544070fa/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청은 성공적으로 처리했으나 전송할 데이터(Response Body)가 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020157_4&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/e8e9833a-9936-44fb-b88b-a50ba20663b6/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 204 No Content&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 202 Accepted&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 201 Created&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 200 OK&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;3XX : Redirection Message&lt;/li&gt;
&lt;li&gt;4XX : Client Error Response
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트의 요청이 잘못되었음.&lt;/li&gt;
&lt;li&gt;서버는 해당 요청을 처리하지 않음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_5&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/83ef215d-afd0-4b5a-bc22-26c9a1de87b5/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트가 인증이 되지 않았거나 인증정보가 유효하지 않음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_6&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/42ebd32e-239b-4278-bc4d-d3a485ca7b9e/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버에서 요청을 이해했으나 금지된 요청.&lt;/li&gt;
&lt;li&gt;요청에 대한 자원이 있으나 수행할 권한이 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_7&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/e9aae144-31bf-4567-b75d-98d028fd4c99/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청한 자원을 찾을 수 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_8&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/ac7109e6-cbad-42ae-ae6f-352b61225a84/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 404 Not Found&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 403 Forbidden&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 401 Unauthorized&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 400 Bad Request&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;5XX : Server Error Response
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 대해 서버가 수행하지 못하는 상황.&lt;/li&gt;
&lt;li&gt;서버가 동작하지 않는다는 포괄적인 의미가 내포됨.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_9&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/ec5c10e1-866f-409d-9b5b-bc5b99cb9162/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버가 요청을 처리할 준비가 되지 않았음.&lt;/li&gt;
&lt;li&gt;서버가 다운되었거나 일시적으로 중단된 상태.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020159_10&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/4d6a537a-8adb-4d03-930e-40a8cb0ec3a2/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 503 Service Unavailable&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 500 Internal Server Error&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;02.&lt;/b&gt; URL&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;aside&amp;gt; ✔️ &lt;b&gt;자원을 식별하기 위해 사용하는 URL에 대해 알아볼까요?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;/aside&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;aside&amp;gt;   &lt;b&gt;웹에서의 자원의 식별&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;우리가 어떤 요청을 하는 대상을 자원(Resource)이라고 합니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 문서, 사진, 영상 등이 바로 자원이에요!&lt;/li&gt;
&lt;li&gt;이러한 자원을 식별하기 위해 **URI(Uniform Resource Identifier)**를 사용합니다. &amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;URI (Uniform Resource Identifier)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;통합 자원 식별자입니다.&lt;/li&gt;
&lt;li&gt;인터넷의 자원을 식별할 수 있는 유일한 문자열입니다.&lt;/li&gt;
&lt;li&gt;하위 개념 - URN, URL&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;rArr; 일반적으로 URN을 사용하는 비중이 낮기때문에 URI와 URL을 같은 의미로 사용하기도 해요!&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;URL(Uniform Resource Locator)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;**통합 자원 위치(Location)**를 의미합니다.&lt;/li&gt;
&lt;li&gt;웹상에 자원이 어디 있는지 나타내기 위한 문자열입니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 어디에서 어떻게 리소스를 가져와야 하는지 나타내는 문자열이에요!&lt;/li&gt;
&lt;li&gt;흔히 말하는 웹 주소, 링크입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;URN(Uniform Resource Name)&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;**통합 자원 이름(Name)**을 의미합니다.&lt;/li&gt;
&lt;li&gt;위치에 독립적인 자원을 위한 유일한 이름 역할을 합니다.&lt;/li&gt;
&lt;li&gt;리소스를 특정하는 이름입니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ISBN(국제표준도서번호)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;URI의 구조&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;aside&amp;gt; ☝ &lt;b&gt;&lt;a href=&quot;https://www.aidenlim.dev:80/path/to/resource/?key=value#docs&quot;&gt;https://www.aidenlim.dev:80/path/to/resource/?key=value#docs&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;/aside&amp;gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;https://
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Scheme(Protocol)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;브라우저가 사용하는 프로토콜입니다.&lt;/li&gt;
&lt;li&gt;http, https, ftp, file, &amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;www.aidenlim.dev
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Host(Domain name)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청을 처리하는 웹 서버입니다.&lt;/li&gt;
&lt;li&gt;IP 주소를 바로 사용할 수 있지만 도메인 이름을 받아서 사용하는 것이 일반적입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;:80
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Port&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;리소스에 접근할 때 사용되는 일종의 문(게이트)입니다.&lt;/li&gt;
&lt;li&gt;HTTP: 80 / HTTPS: 443이 표준 포트입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;/path/to/resource/
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Path&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;웹 서버에서의 리소스 경로입니다.&lt;/li&gt;
&lt;li&gt;웹 초기에는 실제 물리적인 위치를 나타냈으나 현재는 추상화된 형태를 표현합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;?key=value
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Query(Identifier)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;웹 서버에 제공하는 추가적인 변수입니다.&lt;/li&gt;
&lt;li&gt;&amp;amp;로 구분되는 Key=Value 형태의 데이터입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;#docs
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Fragment(Anchor)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;해당 자원 안에서의 특정 위치 (북마크)를 나타냅니다.&lt;/li&gt;
&lt;li&gt;HTML 문서의 특정 부분을 보여주기 위한 방법입니다.&amp;lt;aside&amp;gt;   &lt;b&gt;또다시 HTTP 이야기&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;H&lt;/b&gt;yper &lt;b&gt;T&lt;/b&gt;ext &lt;b&gt;T&lt;/b&gt;ransfer &lt;b&gt;P&lt;/b&gt;rotocol&lt;/li&gt;
&lt;li&gt;&amp;rArr; Web에서 이루어지는 **데이터 교환의 기초(**약속)입니다.&lt;/li&gt;
&lt;li&gt;요청(Request)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;클라이언트 &amp;rarr; 서버&lt;/b&gt;로 전송되는 메세지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;응답(Response)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;서버 &amp;rarr; 클라이언트&lt;/b&gt;로 전송되는 메세지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;특성
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Stateless (무상태)&lt;/b&gt;&amp;rarr; 모든 응답과 요청은 독립적입니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 서버가 클라이언트의 상태를 보존하지 않습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Connectless (비연결성)&lt;/b&gt;&amp;rarr; 연결을 유지하지 않으므로 서버 자원을 효율적으로 사용 가능합니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 이후 HTTP1.1이 등장하면서 개선되었습니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 요청 받고 응답을 주고나면 연결을 종료합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;&amp;rArr; 단순하며 확장성이 용이한 구조&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&amp;lt;/aside&amp;gt;&lt;b&gt;요청(Request)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트가 서버로 전달해서 서버의 어떤 행동(action)이 일어나게 하는 것을 의미합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;응답(Response)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 대한 서버의 답변을 의미합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;Http Message의 구조&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청과 응답은 구조가 비슷합니다.&lt;/li&gt;
&lt;li&gt;시작(Start Line) - 실행되어야할 요청, 요청에 대한 성공 또는 실패&lt;/li&gt;
&lt;li&gt;HTTP Header - 요청에 대한 설명, 본문에 대한 설명&lt;/li&gt;
&lt;li&gt;빈줄(Blank Line) - 메타 정보의 끝을 알림&lt;/li&gt;
&lt;li&gt;HTTP Body - 요청과 관련된 내용, 응답과 관련된 문서&lt;/li&gt;
&lt;/ul&gt;
&amp;lt;aside&amp;gt;   예시출처 : MDN
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Start Line
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Method, Traget, HTTP Version&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Headers
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 필요한 여러가지 메타 정보&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Body
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 필요한 여러가지 데이터&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;응답(Response)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Start Line
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HTTP Version, Status Code, Status Message&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Headers
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;응답에 대한 열가지 메타 정보&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Body
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청을 처리한 여러가지 데이터 &amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
HTTP Request Methods&amp;lt;/aside&amp;gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청 자원에 대한 &lt;b&gt;행위&lt;/b&gt;를 나타냅니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;어떤 동작을 하려고 하는지를 나타내요!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;GET, POST, PUT, DELETE, &amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&amp;rarr; REST 이야기할 때 조금 더 알아보아요!&amp;lt;aside&amp;gt; &amp;lt;img src=&quot;/icons/checkmark-square_red.svg&quot; alt=&quot;/icons/checkmark-square_red.svg&quot; width=&quot;40px&quot; /&amp;gt; MDN 공식 문서 &lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/Status&quot;&gt;https://developer.mozilla.org/ko/docs/Web/HTTP/Status&lt;/a&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HTTP 요청에 대해 &lt;b&gt;성공 여부를 나타내는 코드값&lt;/b&gt;입니다.&lt;/li&gt;
&lt;li&gt;크게 5개의 그룹으로 나누어집니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1XX : Informational Response&lt;/li&gt;
&lt;li&gt;2XX : Successful Response
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;성공 - 에러없이 요청이 성공.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020156_1&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/9cf77578-72f4-4a66-9fec-d6f7bdd31935/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청이 성공했고 새로운 데이터가 만들어짐.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020157_2&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/f81709dc-1871-4c0d-82bd-7b599b49d62b/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청은 정상적이나 아직 처리가 완료되지 않음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020157_3&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/bd260605-a321-43d8-aceb-8c6b544070fa/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청은 성공적으로 처리했으나 전송할 데이터(Response Body)가 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020157_4&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/e8e9833a-9936-44fb-b88b-a50ba20663b6/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 204 No Content&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 202 Accepted&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 201 Created&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 200 OK&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;3XX : Redirection Message&lt;/li&gt;
&lt;li&gt;4XX : Client Error Response
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트의 요청이 잘못되었음.&lt;/li&gt;
&lt;li&gt;서버는 해당 요청을 처리하지 않음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_5&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/83ef215d-afd0-4b5a-bc22-26c9a1de87b5/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트가 인증이 되지 않았거나 인증정보가 유효하지 않음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_6&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/42ebd32e-239b-4278-bc4d-d3a485ca7b9e/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버에서 요청을 이해했으나 금지된 요청.&lt;/li&gt;
&lt;li&gt;요청에 대한 자원이 있으나 수행할 권한이 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_7&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/e9aae144-31bf-4567-b75d-98d028fd4c99/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청한 자원을 찾을 수 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_8&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/ac7109e6-cbad-42ae-ae6f-352b61225a84/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 404 Not Found&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 403 Forbidden&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 401 Unauthorized&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 400 Bad Request&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;5XX : Server Error Response
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 대해 서버가 수행하지 못하는 상황.&lt;/li&gt;
&lt;li&gt;서버가 동작하지 않는다는 포괄적인 의미가 내포됨.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_9&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/ec5c10e1-866f-409d-9b5b-bc5b99cb9162/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버가 요청을 처리할 준비가 되지 않았음.&lt;/li&gt;
&lt;li&gt;서버가 다운되었거나 일시적으로 중단된 상태.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020159_10&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/4d6a537a-8adb-4d03-930e-40a8cb0ec3a2/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 503 Service Unavailable&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 500 Internal Server Error&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;b&gt;02.&lt;/b&gt; URL&amp;lt;/aside&amp;gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;우리가 어떤 요청을 하는 대상을 자원(Resource)이라고 합니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 문서, 사진, 영상 등이 바로 자원이에요!&lt;/li&gt;
&lt;li&gt;이러한 자원을 식별하기 위해 **URI(Uniform Resource Identifier)**를 사용합니다. &amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
URI (Uniform Resource Identifier)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;통합 자원 식별자입니다.&lt;/li&gt;
&lt;li&gt;인터넷의 자원을 식별할 수 있는 유일한 문자열입니다.&lt;/li&gt;
&lt;li&gt;하위 개념 - URN, URL&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;&amp;rArr; 일반적으로 URN을 사용하는 비중이 낮기때문에 URI와 URL을 같은 의미로 사용하기도 해요!&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;**통합 자원 위치(Location)**를 의미합니다.&lt;/li&gt;
&lt;li&gt;웹상에 자원이 어디 있는지 나타내기 위한 문자열입니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 어디에서 어떻게 리소스를 가져와야 하는지 나타내는 문자열이에요!&lt;/li&gt;
&lt;li&gt;흔히 말하는 웹 주소, 링크입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;URN(Uniform Resource Name)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;**통합 자원 이름(Name)**을 의미합니다.&lt;/li&gt;
&lt;li&gt;위치에 독립적인 자원을 위한 유일한 이름 역할을 합니다.&lt;/li&gt;
&lt;li&gt;리소스를 특정하는 이름입니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ISBN(국제표준도서번호)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
URI의 구조&amp;lt;/aside&amp;gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;https://
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Scheme(Protocol)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;브라우저가 사용하는 프로토콜입니다.&lt;/li&gt;
&lt;li&gt;http, https, ftp, file, &amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;www.aidenlim.dev
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Host(Domain name)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청을 처리하는 웹 서버입니다.&lt;/li&gt;
&lt;li&gt;IP 주소를 바로 사용할 수 있지만 도메인 이름을 받아서 사용하는 것이 일반적입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;:80
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Port&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;리소스에 접근할 때 사용되는 일종의 문(게이트)입니다.&lt;/li&gt;
&lt;li&gt;HTTP: 80 / HTTPS: 443이 표준 포트입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;/path/to/resource/
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Path&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;웹 서버에서의 리소스 경로입니다.&lt;/li&gt;
&lt;li&gt;웹 초기에는 실제 물리적인 위치를 나타냈으나 현재는 추상화된 형태를 표현합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;?key=value
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Query(Identifier)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;웹 서버에 제공하는 추가적인 변수입니다.&lt;/li&gt;
&lt;li&gt;&amp;amp;로 구분되는 Key=Value 형태의 데이터입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;#docs
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Fragment(Anchor)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;해당 자원 안에서의 특정 위치 (북마크)를 나타냅니다.&lt;/li&gt;
&lt;li&gt;HTML 문서의 특정 부분을 보여주기 위한 방법입니다.&amp;lt;aside&amp;gt;   &lt;b&gt;또다시 HTTP 이야기&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;H&lt;/b&gt;yper &lt;b&gt;T&lt;/b&gt;ext &lt;b&gt;T&lt;/b&gt;ransfer &lt;b&gt;P&lt;/b&gt;rotocol&lt;/li&gt;
&lt;li&gt;&amp;rArr; Web에서 이루어지는 **데이터 교환의 기초(**약속)입니다.&lt;/li&gt;
&lt;li&gt;요청(Request)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;클라이언트 &amp;rarr; 서버&lt;/b&gt;로 전송되는 메세지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;응답(Response)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;서버 &amp;rarr; 클라이언트&lt;/b&gt;로 전송되는 메세지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;특성
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Stateless (무상태)&lt;/b&gt;&amp;rarr; 모든 응답과 요청은 독립적입니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 서버가 클라이언트의 상태를 보존하지 않습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Connectless (비연결성)&lt;/b&gt;&amp;rarr; 연결을 유지하지 않으므로 서버 자원을 효율적으로 사용 가능합니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 이후 HTTP1.1이 등장하면서 개선되었습니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 요청 받고 응답을 주고나면 연결을 종료합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;&amp;rArr; 단순하며 확장성이 용이한 구조&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&amp;lt;/aside&amp;gt;&lt;b&gt;요청(Request)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트가 서버로 전달해서 서버의 어떤 행동(action)이 일어나게 하는 것을 의미합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;응답(Response)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 대한 서버의 답변을 의미합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;Http Message의 구조&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청과 응답은 구조가 비슷합니다.&lt;/li&gt;
&lt;li&gt;시작(Start Line) - 실행되어야할 요청, 요청에 대한 성공 또는 실패&lt;/li&gt;
&lt;li&gt;HTTP Header - 요청에 대한 설명, 본문에 대한 설명&lt;/li&gt;
&lt;li&gt;빈줄(Blank Line) - 메타 정보의 끝을 알림&lt;/li&gt;
&lt;li&gt;HTTP Body - 요청과 관련된 내용, 응답과 관련된 문서&lt;/li&gt;
&lt;/ul&gt;
&amp;lt;aside&amp;gt;   예시출처 : MDN
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Start Line
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Method, Traget, HTTP Version&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Headers
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 필요한 여러가지 메타 정보&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Body
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 필요한 여러가지 데이터&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;응답(Response)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Start Line
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HTTP Version, Status Code, Status Message&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Headers
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;응답에 대한 열가지 메타 정보&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Body
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청을 처리한 여러가지 데이터 &amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
HTTP Request Methods&amp;lt;/aside&amp;gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청 자원에 대한 &lt;b&gt;행위&lt;/b&gt;를 나타냅니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;어떤 동작을 하려고 하는지를 나타내요!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;GET, POST, PUT, DELETE, &amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&amp;rarr; REST 이야기할 때 조금 더 알아보아요!&amp;lt;aside&amp;gt; &amp;lt;img src=&quot;/icons/checkmark-square_red.svg&quot; alt=&quot;/icons/checkmark-square_red.svg&quot; width=&quot;40px&quot; /&amp;gt; MDN 공식 문서 &lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/Status&quot;&gt;https://developer.mozilla.org/ko/docs/Web/HTTP/Status&lt;/a&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HTTP 요청에 대해 &lt;b&gt;성공 여부를 나타내는 코드값&lt;/b&gt;입니다.&lt;/li&gt;
&lt;li&gt;크게 5개의 그룹으로 나누어집니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1XX : Informational Response&lt;/li&gt;
&lt;li&gt;2XX : Successful Response
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;성공 - 에러없이 요청이 성공.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020156_1&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/9cf77578-72f4-4a66-9fec-d6f7bdd31935/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청이 성공했고 새로운 데이터가 만들어짐.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020157_2&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/f81709dc-1871-4c0d-82bd-7b599b49d62b/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청은 정상적이나 아직 처리가 완료되지 않음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020157_3&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/bd260605-a321-43d8-aceb-8c6b544070fa/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청은 성공적으로 처리했으나 전송할 데이터(Response Body)가 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020157_4&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/e8e9833a-9936-44fb-b88b-a50ba20663b6/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 204 No Content&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 202 Accepted&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 201 Created&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 200 OK&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;3XX : Redirection Message&lt;/li&gt;
&lt;li&gt;4XX : Client Error Response
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트의 요청이 잘못되었음.&lt;/li&gt;
&lt;li&gt;서버는 해당 요청을 처리하지 않음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_5&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/83ef215d-afd0-4b5a-bc22-26c9a1de87b5/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트가 인증이 되지 않았거나 인증정보가 유효하지 않음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_6&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/42ebd32e-239b-4278-bc4d-d3a485ca7b9e/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버에서 요청을 이해했으나 금지된 요청.&lt;/li&gt;
&lt;li&gt;요청에 대한 자원이 있으나 수행할 권한이 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_7&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/e9aae144-31bf-4567-b75d-98d028fd4c99/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청한 자원을 찾을 수 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_8&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/ac7109e6-cbad-42ae-ae6f-352b61225a84/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 404 Not Found&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 403 Forbidden&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 401 Unauthorized&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 400 Bad Request&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;5XX : Server Error Response
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 대해 서버가 수행하지 못하는 상황.&lt;/li&gt;
&lt;li&gt;서버가 동작하지 않는다는 포괄적인 의미가 내포됨.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_9&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/ec5c10e1-866f-409d-9b5b-bc5b99cb9162/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버가 요청을 처리할 준비가 되지 않았음.&lt;/li&gt;
&lt;li&gt;서버가 다운되었거나 일시적으로 중단된 상태.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020159_10&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/4d6a537a-8adb-4d03-930e-40a8cb0ec3a2/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 503 Service Unavailable&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 500 Internal Server Error&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;b&gt;02.&lt;/b&gt; URL&amp;lt;/aside&amp;gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;우리가 어떤 요청을 하는 대상을 자원(Resource)이라고 합니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 문서, 사진, 영상 등이 바로 자원이에요!&lt;/li&gt;
&lt;li&gt;이러한 자원을 식별하기 위해 **URI(Uniform Resource Identifier)**를 사용합니다. &amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
URI (Uniform Resource Identifier)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;통합 자원 식별자입니다.&lt;/li&gt;
&lt;li&gt;인터넷의 자원을 식별할 수 있는 유일한 문자열입니다.&lt;/li&gt;
&lt;li&gt;하위 개념 - URN, URL&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;&amp;rArr; 일반적으로 URN을 사용하는 비중이 낮기때문에 URI와 URL을 같은 의미로 사용하기도 해요!&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;**통합 자원 위치(Location)**를 의미합니다.&lt;/li&gt;
&lt;li&gt;웹상에 자원이 어디 있는지 나타내기 위한 문자열입니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 어디에서 어떻게 리소스를 가져와야 하는지 나타내는 문자열이에요!&lt;/li&gt;
&lt;li&gt;흔히 말하는 웹 주소, 링크입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;URN(Uniform Resource Name)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;**통합 자원 이름(Name)**을 의미합니다.&lt;/li&gt;
&lt;li&gt;위치에 독립적인 자원을 위한 유일한 이름 역할을 합니다.&lt;/li&gt;
&lt;li&gt;리소스를 특정하는 이름입니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ISBN(국제표준도서번호)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
URI의 구조&amp;lt;/aside&amp;gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;https://
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Scheme(Protocol)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;브라우저가 사용하는 프로토콜입니다.&lt;/li&gt;
&lt;li&gt;http, https, ftp, file, &amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;www.aidenlim.dev
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Host(Domain name)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청을 처리하는 웹 서버입니다.&lt;/li&gt;
&lt;li&gt;IP 주소를 바로 사용할 수 있지만 도메인 이름을 받아서 사용하는 것이 일반적입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;:80
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Port&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;리소스에 접근할 때 사용되는 일종의 문(게이트)입니다.&lt;/li&gt;
&lt;li&gt;HTTP: 80 / HTTPS: 443이 표준 포트입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;/path/to/resource/
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Path&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;웹 서버에서의 리소스 경로입니다.&lt;/li&gt;
&lt;li&gt;웹 초기에는 실제 물리적인 위치를 나타냈으나 현재는 추상화된 형태를 표현합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;?key=value
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Query(Identifier)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;웹 서버에 제공하는 추가적인 변수입니다.&lt;/li&gt;
&lt;li&gt;&amp;amp;로 구분되는 Key=Value 형태의 데이터입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;#docs
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Fragment(Anchor)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;해당 자원 안에서의 특정 위치 (북마크)를 나타냅니다.&lt;/li&gt;
&lt;li&gt;HTML 문서의 특정 부분을 보여주기 위한 방법입니다.&amp;lt;aside&amp;gt;   &lt;b&gt;또다시 HTTP 이야기&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;H&lt;/b&gt;yper &lt;b&gt;T&lt;/b&gt;ext &lt;b&gt;T&lt;/b&gt;ransfer &lt;b&gt;P&lt;/b&gt;rotocol&lt;/li&gt;
&lt;li&gt;&amp;rArr; Web에서 이루어지는 **데이터 교환의 기초(**약속)입니다.&lt;/li&gt;
&lt;li&gt;요청(Request)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;클라이언트 &amp;rarr; 서버&lt;/b&gt;로 전송되는 메세지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;응답(Response)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;서버 &amp;rarr; 클라이언트&lt;/b&gt;로 전송되는 메세지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;특성
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Stateless (무상태)&lt;/b&gt;&amp;rarr; 모든 응답과 요청은 독립적입니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 서버가 클라이언트의 상태를 보존하지 않습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Connectless (비연결성)&lt;/b&gt;&amp;rarr; 연결을 유지하지 않으므로 서버 자원을 효율적으로 사용 가능합니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 이후 HTTP1.1이 등장하면서 개선되었습니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 요청 받고 응답을 주고나면 연결을 종료합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;&amp;rArr; 단순하며 확장성이 용이한 구조&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&amp;lt;/aside&amp;gt;&lt;b&gt;요청(Request)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트가 서버로 전달해서 서버의 어떤 행동(action)이 일어나게 하는 것을 의미합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;응답(Response)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 대한 서버의 답변을 의미합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;Http Message의 구조&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청과 응답은 구조가 비슷합니다.&lt;/li&gt;
&lt;li&gt;시작(Start Line) - 실행되어야할 요청, 요청에 대한 성공 또는 실패&lt;/li&gt;
&lt;li&gt;HTTP Header - 요청에 대한 설명, 본문에 대한 설명&lt;/li&gt;
&lt;li&gt;빈줄(Blank Line) - 메타 정보의 끝을 알림&lt;/li&gt;
&lt;li&gt;HTTP Body - 요청과 관련된 내용, 응답과 관련된 문서&lt;/li&gt;
&lt;/ul&gt;
&amp;lt;aside&amp;gt;   예시출처 : MDN
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Start Line
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Method, Traget, HTTP Version&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Headers
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 필요한 여러가지 메타 정보&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Body
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 필요한 여러가지 데이터&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;응답(Response)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Start Line
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HTTP Version, Status Code, Status Message&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Headers
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;응답에 대한 열가지 메타 정보&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Body
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청을 처리한 여러가지 데이터 &amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
HTTP Request Methods&amp;lt;/aside&amp;gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청 자원에 대한 &lt;b&gt;행위&lt;/b&gt;를 나타냅니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;어떤 동작을 하려고 하는지를 나타내요!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;GET, POST, PUT, DELETE, &amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&amp;rarr; REST 이야기할 때 조금 더 알아보아요!&amp;lt;aside&amp;gt; &amp;lt;img src=&quot;/icons/checkmark-square_red.svg&quot; alt=&quot;/icons/checkmark-square_red.svg&quot; width=&quot;40px&quot; /&amp;gt; MDN 공식 문서 &lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/Status&quot;&gt;https://developer.mozilla.org/ko/docs/Web/HTTP/Status&lt;/a&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HTTP 요청에 대해 &lt;b&gt;성공 여부를 나타내는 코드값&lt;/b&gt;입니다.&lt;/li&gt;
&lt;li&gt;크게 5개의 그룹으로 나누어집니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1XX : Informational Response&lt;/li&gt;
&lt;li&gt;2XX : Successful Response
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;성공 - 에러없이 요청이 성공.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020156_1&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/9cf77578-72f4-4a66-9fec-d6f7bdd31935/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청이 성공했고 새로운 데이터가 만들어짐.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020157_2&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/f81709dc-1871-4c0d-82bd-7b599b49d62b/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청은 정상적이나 아직 처리가 완료되지 않음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020157_3&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/bd260605-a321-43d8-aceb-8c6b544070fa/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청은 성공적으로 처리했으나 전송할 데이터(Response Body)가 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020157_4&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/e8e9833a-9936-44fb-b88b-a50ba20663b6/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 204 No Content&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 202 Accepted&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 201 Created&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 200 OK&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;3XX : Redirection Message&lt;/li&gt;
&lt;li&gt;4XX : Client Error Response
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트의 요청이 잘못되었음.&lt;/li&gt;
&lt;li&gt;서버는 해당 요청을 처리하지 않음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_5&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/83ef215d-afd0-4b5a-bc22-26c9a1de87b5/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트가 인증이 되지 않았거나 인증정보가 유효하지 않음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_6&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/42ebd32e-239b-4278-bc4d-d3a485ca7b9e/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버에서 요청을 이해했으나 금지된 요청.&lt;/li&gt;
&lt;li&gt;요청에 대한 자원이 있으나 수행할 권한이 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_7&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/e9aae144-31bf-4567-b75d-98d028fd4c99/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청한 자원을 찾을 수 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_8&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/ac7109e6-cbad-42ae-ae6f-352b61225a84/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 404 Not Found&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 403 Forbidden&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 401 Unauthorized&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 400 Bad Request&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;5XX : Server Error Response
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 대해 서버가 수행하지 못하는 상황.&lt;/li&gt;
&lt;li&gt;서버가 동작하지 않는다는 포괄적인 의미가 내포됨.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_9&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/ec5c10e1-866f-409d-9b5b-bc5b99cb9162/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버가 요청을 처리할 준비가 되지 않았음.&lt;/li&gt;
&lt;li&gt;서버가 다운되었거나 일시적으로 중단된 상태.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020159_10&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/4d6a537a-8adb-4d03-930e-40a8cb0ec3a2/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 503 Service Unavailable&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 500 Internal Server Error&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;b&gt;02.&lt;/b&gt; URL&amp;lt;/aside&amp;gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;우리가 어떤 요청을 하는 대상을 자원(Resource)이라고 합니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 문서, 사진, 영상 등이 바로 자원이에요!&lt;/li&gt;
&lt;li&gt;이러한 자원을 식별하기 위해 **URI(Uniform Resource Identifier)**를 사용합니다. &amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
URI (Uniform Resource Identifier)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;통합 자원 식별자입니다.&lt;/li&gt;
&lt;li&gt;인터넷의 자원을 식별할 수 있는 유일한 문자열입니다.&lt;/li&gt;
&lt;li&gt;하위 개념 - URN, URL&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;&amp;rArr; 일반적으로 URN을 사용하는 비중이 낮기때문에 URI와 URL을 같은 의미로 사용하기도 해요!&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;**통합 자원 위치(Location)**를 의미합니다.&lt;/li&gt;
&lt;li&gt;웹상에 자원이 어디 있는지 나타내기 위한 문자열입니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 어디에서 어떻게 리소스를 가져와야 하는지 나타내는 문자열이에요!&lt;/li&gt;
&lt;li&gt;흔히 말하는 웹 주소, 링크입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;URN(Uniform Resource Name)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;**통합 자원 이름(Name)**을 의미합니다.&lt;/li&gt;
&lt;li&gt;위치에 독립적인 자원을 위한 유일한 이름 역할을 합니다.&lt;/li&gt;
&lt;li&gt;리소스를 특정하는 이름입니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ISBN(국제표준도서번호)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
URI의 구조&amp;lt;/aside&amp;gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;https://
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Scheme(Protocol)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;브라우저가 사용하는 프로토콜입니다.&lt;/li&gt;
&lt;li&gt;http, https, ftp, file, &amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;www.aidenlim.dev
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Host(Domain name)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청을 처리하는 웹 서버입니다.&lt;/li&gt;
&lt;li&gt;IP 주소를 바로 사용할 수 있지만 도메인 이름을 받아서 사용하는 것이 일반적입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;:80
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Port&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;리소스에 접근할 때 사용되는 일종의 문(게이트)입니다.&lt;/li&gt;
&lt;li&gt;HTTP: 80 / HTTPS: 443이 표준 포트입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;/path/to/resource/
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Path&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;웹 서버에서의 리소스 경로입니다.&lt;/li&gt;
&lt;li&gt;웹 초기에는 실제 물리적인 위치를 나타냈으나 현재는 추상화된 형태를 표현합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;?key=value
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Query(Identifier)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;웹 서버에 제공하는 추가적인 변수입니다.&lt;/li&gt;
&lt;li&gt;&amp;amp;로 구분되는 Key=Value 형태의 데이터입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;#docs
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Fragment(Anchor)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;해당 자원 안에서의 특정 위치 (북마크)를 나타냅니다.&lt;/li&gt;
&lt;li&gt;HTML 문서의 특정 부분을 보여주기 위한 방법입니다.&amp;lt;aside&amp;gt;   &lt;b&gt;또다시 HTTP 이야기&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;H&lt;/b&gt;yper &lt;b&gt;T&lt;/b&gt;ext &lt;b&gt;T&lt;/b&gt;ransfer &lt;b&gt;P&lt;/b&gt;rotocol&lt;/li&gt;
&lt;li&gt;&amp;rArr; Web에서 이루어지는 **데이터 교환의 기초(**약속)입니다.&lt;/li&gt;
&lt;li&gt;요청(Request)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;클라이언트 &amp;rarr; 서버&lt;/b&gt;로 전송되는 메세지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;응답(Response)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;서버 &amp;rarr; 클라이언트&lt;/b&gt;로 전송되는 메세지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;특성
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Stateless (무상태)&lt;/b&gt;&amp;rarr; 모든 응답과 요청은 독립적입니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 서버가 클라이언트의 상태를 보존하지 않습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Connectless (비연결성)&lt;/b&gt;&amp;rarr; 연결을 유지하지 않으므로 서버 자원을 효율적으로 사용 가능합니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 이후 HTTP1.1이 등장하면서 개선되었습니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 요청 받고 응답을 주고나면 연결을 종료합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;&amp;rArr; 단순하며 확장성이 용이한 구조&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&amp;lt;/aside&amp;gt;&lt;b&gt;요청(Request)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트가 서버로 전달해서 서버의 어떤 행동(action)이 일어나게 하는 것을 의미합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;응답(Response)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 대한 서버의 답변을 의미합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;Http Message의 구조&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청과 응답은 구조가 비슷합니다.&lt;/li&gt;
&lt;li&gt;시작(Start Line) - 실행되어야할 요청, 요청에 대한 성공 또는 실패&lt;/li&gt;
&lt;li&gt;HTTP Header - 요청에 대한 설명, 본문에 대한 설명&lt;/li&gt;
&lt;li&gt;빈줄(Blank Line) - 메타 정보의 끝을 알림&lt;/li&gt;
&lt;li&gt;HTTP Body - 요청과 관련된 내용, 응답과 관련된 문서&lt;/li&gt;
&lt;/ul&gt;
&amp;lt;aside&amp;gt;   예시출처 : MDN
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Start Line
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Method, Traget, HTTP Version&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Headers
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 필요한 여러가지 메타 정보&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Body
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 필요한 여러가지 데이터&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;응답(Response)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Start Line
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HTTP Version, Status Code, Status Message&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Headers
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;응답에 대한 열가지 메타 정보&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Body
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청을 처리한 여러가지 데이터 &amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
HTTP Request Methods&amp;lt;/aside&amp;gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청 자원에 대한 &lt;b&gt;행위&lt;/b&gt;를 나타냅니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;어떤 동작을 하려고 하는지를 나타내요!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;GET, POST, PUT, DELETE, &amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&amp;rarr; REST 이야기할 때 조금 더 알아보아요!&amp;lt;aside&amp;gt; &amp;lt;img src=&quot;/icons/checkmark-square_red.svg&quot; alt=&quot;/icons/checkmark-square_red.svg&quot; width=&quot;40px&quot; /&amp;gt; MDN 공식 문서 &lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/Status&quot;&gt;https://developer.mozilla.org/ko/docs/Web/HTTP/Status&lt;/a&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HTTP 요청에 대해 &lt;b&gt;성공 여부를 나타내는 코드값&lt;/b&gt;입니다.&lt;/li&gt;
&lt;li&gt;크게 5개의 그룹으로 나누어집니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1XX : Informational Response&lt;/li&gt;
&lt;li&gt;2XX : Successful Response
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;성공 - 에러없이 요청이 성공.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020156_1&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/9cf77578-72f4-4a66-9fec-d6f7bdd31935/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청이 성공했고 새로운 데이터가 만들어짐.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020157_2&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/f81709dc-1871-4c0d-82bd-7b599b49d62b/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청은 정상적이나 아직 처리가 완료되지 않음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020157_3&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/bd260605-a321-43d8-aceb-8c6b544070fa/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청은 성공적으로 처리했으나 전송할 데이터(Response Body)가 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020157_4&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/e8e9833a-9936-44fb-b88b-a50ba20663b6/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 204 No Content&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 202 Accepted&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 201 Created&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 200 OK&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;3XX : Redirection Message&lt;/li&gt;
&lt;li&gt;4XX : Client Error Response
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트의 요청이 잘못되었음.&lt;/li&gt;
&lt;li&gt;서버는 해당 요청을 처리하지 않음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_5&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/83ef215d-afd0-4b5a-bc22-26c9a1de87b5/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트가 인증이 되지 않았거나 인증정보가 유효하지 않음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_6&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/42ebd32e-239b-4278-bc4d-d3a485ca7b9e/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버에서 요청을 이해했으나 금지된 요청.&lt;/li&gt;
&lt;li&gt;요청에 대한 자원이 있으나 수행할 권한이 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_7&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/e9aae144-31bf-4567-b75d-98d028fd4c99/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청한 자원을 찾을 수 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_8&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/ac7109e6-cbad-42ae-ae6f-352b61225a84/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 404 Not Found&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 403 Forbidden&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 401 Unauthorized&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 400 Bad Request&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;5XX : Server Error Response
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 대해 서버가 수행하지 못하는 상황.&lt;/li&gt;
&lt;li&gt;서버가 동작하지 않는다는 포괄적인 의미가 내포됨.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_9&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/ec5c10e1-866f-409d-9b5b-bc5b99cb9162/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버가 요청을 처리할 준비가 되지 않았음.&lt;/li&gt;
&lt;li&gt;서버가 다운되었거나 일시적으로 중단된 상태.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020159_10&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/4d6a537a-8adb-4d03-930e-40a8cb0ec3a2/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 503 Service Unavailable&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 500 Internal Server Error&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;b&gt;02.&lt;/b&gt; URL&amp;lt;/aside&amp;gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;우리가 어떤 요청을 하는 대상을 자원(Resource)이라고 합니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 문서, 사진, 영상 등이 바로 자원이에요!&lt;/li&gt;
&lt;li&gt;이러한 자원을 식별하기 위해 **URI(Uniform Resource Identifier)**를 사용합니다. &amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
URI (Uniform Resource Identifier)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;통합 자원 식별자입니다.&lt;/li&gt;
&lt;li&gt;인터넷의 자원을 식별할 수 있는 유일한 문자열입니다.&lt;/li&gt;
&lt;li&gt;하위 개념 - URN, URL&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;&amp;rArr; 일반적으로 URN을 사용하는 비중이 낮기때문에 URI와 URL을 같은 의미로 사용하기도 해요!&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;**통합 자원 위치(Location)**를 의미합니다.&lt;/li&gt;
&lt;li&gt;웹상에 자원이 어디 있는지 나타내기 위한 문자열입니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 어디에서 어떻게 리소스를 가져와야 하는지 나타내는 문자열이에요!&lt;/li&gt;
&lt;li&gt;흔히 말하는 웹 주소, 링크입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;URN(Uniform Resource Name)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;**통합 자원 이름(Name)**을 의미합니다.&lt;/li&gt;
&lt;li&gt;위치에 독립적인 자원을 위한 유일한 이름 역할을 합니다.&lt;/li&gt;
&lt;li&gt;리소스를 특정하는 이름입니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ISBN(국제표준도서번호)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
URI의 구조&amp;lt;/aside&amp;gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;https://
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Scheme(Protocol)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;브라우저가 사용하는 프로토콜입니다.&lt;/li&gt;
&lt;li&gt;http, https, ftp, file, &amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;www.aidenlim.dev
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Host(Domain name)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청을 처리하는 웹 서버입니다.&lt;/li&gt;
&lt;li&gt;IP 주소를 바로 사용할 수 있지만 도메인 이름을 받아서 사용하는 것이 일반적입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;:80
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Port&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;리소스에 접근할 때 사용되는 일종의 문(게이트)입니다.&lt;/li&gt;
&lt;li&gt;HTTP: 80 / HTTPS: 443이 표준 포트입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;/path/to/resource/
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Path&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;웹 서버에서의 리소스 경로입니다.&lt;/li&gt;
&lt;li&gt;웹 초기에는 실제 물리적인 위치를 나타냈으나 현재는 추상화된 형태를 표현합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;?key=value
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Query(Identifier)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;웹 서버에 제공하는 추가적인 변수입니다.&lt;/li&gt;
&lt;li&gt;&amp;amp;로 구분되는 Key=Value 형태의 데이터입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;#docs
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Fragment(Anchor)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;해당 자원 안에서의 특정 위치 (북마크)를 나타냅니다.&lt;/li&gt;
&lt;li&gt;HTML 문서의 특정 부분을 보여주기 위한 방법입니다.&amp;lt;aside&amp;gt;   &lt;b&gt;또다시 HTTP 이야기&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;H&lt;/b&gt;yper &lt;b&gt;T&lt;/b&gt;ext &lt;b&gt;T&lt;/b&gt;ransfer &lt;b&gt;P&lt;/b&gt;rotocol&lt;/li&gt;
&lt;li&gt;&amp;rArr; Web에서 이루어지는 **데이터 교환의 기초(**약속)입니다.&lt;/li&gt;
&lt;li&gt;요청(Request)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;클라이언트 &amp;rarr; 서버&lt;/b&gt;로 전송되는 메세지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;응답(Response)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;서버 &amp;rarr; 클라이언트&lt;/b&gt;로 전송되는 메세지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;특성
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Stateless (무상태)&lt;/b&gt;&amp;rarr; 모든 응답과 요청은 독립적입니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 서버가 클라이언트의 상태를 보존하지 않습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Connectless (비연결성)&lt;/b&gt;&amp;rarr; 연결을 유지하지 않으므로 서버 자원을 효율적으로 사용 가능합니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 이후 HTTP1.1이 등장하면서 개선되었습니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 요청 받고 응답을 주고나면 연결을 종료합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;&amp;rArr; 단순하며 확장성이 용이한 구조&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&amp;lt;/aside&amp;gt;&lt;b&gt;요청(Request)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트가 서버로 전달해서 서버의 어떤 행동(action)이 일어나게 하는 것을 의미합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;응답(Response)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 대한 서버의 답변을 의미합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;Http Message의 구조&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청과 응답은 구조가 비슷합니다.&lt;/li&gt;
&lt;li&gt;시작(Start Line) - 실행되어야할 요청, 요청에 대한 성공 또는 실패&lt;/li&gt;
&lt;li&gt;HTTP Header - 요청에 대한 설명, 본문에 대한 설명&lt;/li&gt;
&lt;li&gt;빈줄(Blank Line) - 메타 정보의 끝을 알림&lt;/li&gt;
&lt;li&gt;HTTP Body - 요청과 관련된 내용, 응답과 관련된 문서&lt;/li&gt;
&lt;/ul&gt;
&amp;lt;aside&amp;gt;   예시출처 : MDN
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Start Line
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Method, Traget, HTTP Version&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Headers
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 필요한 여러가지 메타 정보&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Body
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 필요한 여러가지 데이터&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;응답(Response)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Start Line
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HTTP Version, Status Code, Status Message&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Headers
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;응답에 대한 열가지 메타 정보&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Body
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청을 처리한 여러가지 데이터 &amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
HTTP Request Methods&amp;lt;/aside&amp;gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청 자원에 대한 &lt;b&gt;행위&lt;/b&gt;를 나타냅니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;어떤 동작을 하려고 하는지를 나타내요!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;GET, POST, PUT, DELETE, &amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&amp;rarr; REST 이야기할 때 조금 더 알아보아요!&amp;lt;aside&amp;gt; &amp;lt;img src=&quot;/icons/checkmark-square_red.svg&quot; alt=&quot;/icons/checkmark-square_red.svg&quot; width=&quot;40px&quot; /&amp;gt; MDN 공식 문서 &lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/Status&quot;&gt;https://developer.mozilla.org/ko/docs/Web/HTTP/Status&lt;/a&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HTTP 요청에 대해 &lt;b&gt;성공 여부를 나타내는 코드값&lt;/b&gt;입니다.&lt;/li&gt;
&lt;li&gt;크게 5개의 그룹으로 나누어집니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1XX : Informational Response&lt;/li&gt;
&lt;li&gt;2XX : Successful Response
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;성공 - 에러없이 요청이 성공.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020156_1&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/9cf77578-72f4-4a66-9fec-d6f7bdd31935/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청이 성공했고 새로운 데이터가 만들어짐.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020157_2&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/f81709dc-1871-4c0d-82bd-7b599b49d62b/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청은 정상적이나 아직 처리가 완료되지 않음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020157_3&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/bd260605-a321-43d8-aceb-8c6b544070fa/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청은 성공적으로 처리했으나 전송할 데이터(Response Body)가 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020157_4&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/e8e9833a-9936-44fb-b88b-a50ba20663b6/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 204 No Content&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 202 Accepted&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 201 Created&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 200 OK&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;3XX : Redirection Message&lt;/li&gt;
&lt;li&gt;4XX : Client Error Response
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트의 요청이 잘못되었음.&lt;/li&gt;
&lt;li&gt;서버는 해당 요청을 처리하지 않음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_5&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/83ef215d-afd0-4b5a-bc22-26c9a1de87b5/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트가 인증이 되지 않았거나 인증정보가 유효하지 않음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_6&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/42ebd32e-239b-4278-bc4d-d3a485ca7b9e/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버에서 요청을 이해했으나 금지된 요청.&lt;/li&gt;
&lt;li&gt;요청에 대한 자원이 있으나 수행할 권한이 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_7&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/e9aae144-31bf-4567-b75d-98d028fd4c99/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청한 자원을 찾을 수 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_8&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/ac7109e6-cbad-42ae-ae6f-352b61225a84/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 404 Not Found&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 403 Forbidden&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 401 Unauthorized&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 400 Bad Request&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;5XX : Server Error Response
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 대해 서버가 수행하지 못하는 상황.&lt;/li&gt;
&lt;li&gt;서버가 동작하지 않는다는 포괄적인 의미가 내포됨.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_9&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/ec5c10e1-866f-409d-9b5b-bc5b99cb9162/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버가 요청을 처리할 준비가 되지 않았음.&lt;/li&gt;
&lt;li&gt;서버가 다운되었거나 일시적으로 중단된 상태.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020159_10&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/4d6a537a-8adb-4d03-930e-40a8cb0ec3a2/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 503 Service Unavailable&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 500 Internal Server Error&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;b&gt;02.&lt;/b&gt; URL&amp;lt;/aside&amp;gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;우리가 어떤 요청을 하는 대상을 자원(Resource)이라고 합니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 문서, 사진, 영상 등이 바로 자원이에요!&lt;/li&gt;
&lt;li&gt;이러한 자원을 식별하기 위해 **URI(Uniform Resource Identifier)**를 사용합니다. &amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
URI (Uniform Resource Identifier)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;통합 자원 식별자입니다.&lt;/li&gt;
&lt;li&gt;인터넷의 자원을 식별할 수 있는 유일한 문자열입니다.&lt;/li&gt;
&lt;li&gt;하위 개념 - URN, URL&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;&amp;rArr; 일반적으로 URN을 사용하는 비중이 낮기때문에 URI와 URL을 같은 의미로 사용하기도 해요!&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;**통합 자원 위치(Location)**를 의미합니다.&lt;/li&gt;
&lt;li&gt;웹상에 자원이 어디 있는지 나타내기 위한 문자열입니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 어디에서 어떻게 리소스를 가져와야 하는지 나타내는 문자열이에요!&lt;/li&gt;
&lt;li&gt;흔히 말하는 웹 주소, 링크입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;URN(Uniform Resource Name)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;**통합 자원 이름(Name)**을 의미합니다.&lt;/li&gt;
&lt;li&gt;위치에 독립적인 자원을 위한 유일한 이름 역할을 합니다.&lt;/li&gt;
&lt;li&gt;리소스를 특정하는 이름입니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ISBN(국제표준도서번호)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
URI의 구조&amp;lt;/aside&amp;gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;https://
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Scheme(Protocol)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;브라우저가 사용하는 프로토콜입니다.&lt;/li&gt;
&lt;li&gt;http, https, ftp, file, &amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;www.aidenlim.dev
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Host(Domain name)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청을 처리하는 웹 서버입니다.&lt;/li&gt;
&lt;li&gt;IP 주소를 바로 사용할 수 있지만 도메인 이름을 받아서 사용하는 것이 일반적입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;:80
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Port&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;리소스에 접근할 때 사용되는 일종의 문(게이트)입니다.&lt;/li&gt;
&lt;li&gt;HTTP: 80 / HTTPS: 443이 표준 포트입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;/path/to/resource/
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Path&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;웹 서버에서의 리소스 경로입니다.&lt;/li&gt;
&lt;li&gt;웹 초기에는 실제 물리적인 위치를 나타냈으나 현재는 추상화된 형태를 표현합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;?key=value
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Query(Identifier)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;웹 서버에 제공하는 추가적인 변수입니다.&lt;/li&gt;
&lt;li&gt;&amp;amp;로 구분되는 Key=Value 형태의 데이터입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;#docs
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Fragment(Anchor)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;해당 자원 안에서의 특정 위치 (북마크)를 나타냅니다.&lt;/li&gt;
&lt;li&gt;HTML 문서의 특정 부분을 보여주기 위한 방법입니다.&amp;lt;aside&amp;gt;   &lt;b&gt;또다시 HTTP 이야기&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;H&lt;/b&gt;yper &lt;b&gt;T&lt;/b&gt;ext &lt;b&gt;T&lt;/b&gt;ransfer &lt;b&gt;P&lt;/b&gt;rotocol&lt;/li&gt;
&lt;li&gt;&amp;rArr; Web에서 이루어지는 **데이터 교환의 기초(**약속)입니다.&lt;/li&gt;
&lt;li&gt;요청(Request)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;클라이언트 &amp;rarr; 서버&lt;/b&gt;로 전송되는 메세지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;응답(Response)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;서버 &amp;rarr; 클라이언트&lt;/b&gt;로 전송되는 메세지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;특성
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Stateless (무상태)&lt;/b&gt;&amp;rarr; 모든 응답과 요청은 독립적입니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 서버가 클라이언트의 상태를 보존하지 않습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Connectless (비연결성)&lt;/b&gt;&amp;rarr; 연결을 유지하지 않으므로 서버 자원을 효율적으로 사용 가능합니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 이후 HTTP1.1이 등장하면서 개선되었습니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 요청 받고 응답을 주고나면 연결을 종료합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;&amp;rArr; 단순하며 확장성이 용이한 구조&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&amp;lt;/aside&amp;gt;&lt;b&gt;요청(Request)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트가 서버로 전달해서 서버의 어떤 행동(action)이 일어나게 하는 것을 의미합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;응답(Response)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 대한 서버의 답변을 의미합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;Http Message의 구조&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청과 응답은 구조가 비슷합니다.&lt;/li&gt;
&lt;li&gt;시작(Start Line) - 실행되어야할 요청, 요청에 대한 성공 또는 실패&lt;/li&gt;
&lt;li&gt;HTTP Header - 요청에 대한 설명, 본문에 대한 설명&lt;/li&gt;
&lt;li&gt;빈줄(Blank Line) - 메타 정보의 끝을 알림&lt;/li&gt;
&lt;li&gt;HTTP Body - 요청과 관련된 내용, 응답과 관련된 문서&lt;/li&gt;
&lt;/ul&gt;
&amp;lt;aside&amp;gt;   예시출처 : MDN
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Start Line
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Method, Traget, HTTP Version&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Headers
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 필요한 여러가지 메타 정보&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Body
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 필요한 여러가지 데이터&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;응답(Response)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Start Line
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HTTP Version, Status Code, Status Message&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Headers
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;응답에 대한 열가지 메타 정보&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Body
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청을 처리한 여러가지 데이터 &amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
HTTP Request Methods&amp;lt;/aside&amp;gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청 자원에 대한 &lt;b&gt;행위&lt;/b&gt;를 나타냅니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;어떤 동작을 하려고 하는지를 나타내요!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;GET, POST, PUT, DELETE, &amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&amp;rarr; REST 이야기할 때 조금 더 알아보아요!&amp;lt;aside&amp;gt; &amp;lt;img src=&quot;/icons/checkmark-square_red.svg&quot; alt=&quot;/icons/checkmark-square_red.svg&quot; width=&quot;40px&quot; /&amp;gt; MDN 공식 문서 &lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/Status&quot;&gt;https://developer.mozilla.org/ko/docs/Web/HTTP/Status&lt;/a&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HTTP 요청에 대해 &lt;b&gt;성공 여부를 나타내는 코드값&lt;/b&gt;입니다.&lt;/li&gt;
&lt;li&gt;크게 5개의 그룹으로 나누어집니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1XX : Informational Response&lt;/li&gt;
&lt;li&gt;2XX : Successful Response
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;성공 - 에러없이 요청이 성공.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020156_1&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/9cf77578-72f4-4a66-9fec-d6f7bdd31935/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청이 성공했고 새로운 데이터가 만들어짐.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020157_2&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/f81709dc-1871-4c0d-82bd-7b599b49d62b/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청은 정상적이나 아직 처리가 완료되지 않음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020157_3&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/bd260605-a321-43d8-aceb-8c6b544070fa/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청은 성공적으로 처리했으나 전송할 데이터(Response Body)가 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020157_4&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/e8e9833a-9936-44fb-b88b-a50ba20663b6/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 204 No Content&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 202 Accepted&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 201 Created&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 200 OK&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;3XX : Redirection Message&lt;/li&gt;
&lt;li&gt;4XX : Client Error Response
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트의 요청이 잘못되었음.&lt;/li&gt;
&lt;li&gt;서버는 해당 요청을 처리하지 않음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_5&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/83ef215d-afd0-4b5a-bc22-26c9a1de87b5/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트가 인증이 되지 않았거나 인증정보가 유효하지 않음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_6&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/42ebd32e-239b-4278-bc4d-d3a485ca7b9e/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버에서 요청을 이해했으나 금지된 요청.&lt;/li&gt;
&lt;li&gt;요청에 대한 자원이 있으나 수행할 권한이 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_7&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/e9aae144-31bf-4567-b75d-98d028fd4c99/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청한 자원을 찾을 수 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_8&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/ac7109e6-cbad-42ae-ae6f-352b61225a84/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 404 Not Found&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 403 Forbidden&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 401 Unauthorized&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 400 Bad Request&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;5XX : Server Error Response
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 대해 서버가 수행하지 못하는 상황.&lt;/li&gt;
&lt;li&gt;서버가 동작하지 않는다는 포괄적인 의미가 내포됨.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_9&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/ec5c10e1-866f-409d-9b5b-bc5b99cb9162/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버가 요청을 처리할 준비가 되지 않았음.&lt;/li&gt;
&lt;li&gt;서버가 다운되었거나 일시적으로 중단된 상태.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020159_10&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/4d6a537a-8adb-4d03-930e-40a8cb0ec3a2/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 503 Service Unavailable&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 500 Internal Server Error&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;b&gt;02.&lt;/b&gt; URL&amp;lt;/aside&amp;gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;우리가 어떤 요청을 하는 대상을 자원(Resource)이라고 합니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 문서, 사진, 영상 등이 바로 자원이에요!&lt;/li&gt;
&lt;li&gt;이러한 자원을 식별하기 위해 **URI(Uniform Resource Identifier)**를 사용합니다. &amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
URI (Uniform Resource Identifier)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;통합 자원 식별자입니다.&lt;/li&gt;
&lt;li&gt;인터넷의 자원을 식별할 수 있는 유일한 문자열입니다.&lt;/li&gt;
&lt;li&gt;하위 개념 - URN, URL&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;&amp;rArr; 일반적으로 URN을 사용하는 비중이 낮기때문에 URI와 URL을 같은 의미로 사용하기도 해요!&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;**통합 자원 위치(Location)**를 의미합니다.&lt;/li&gt;
&lt;li&gt;웹상에 자원이 어디 있는지 나타내기 위한 문자열입니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 어디에서 어떻게 리소스를 가져와야 하는지 나타내는 문자열이에요!&lt;/li&gt;
&lt;li&gt;흔히 말하는 웹 주소, 링크입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;URN(Uniform Resource Name)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;**통합 자원 이름(Name)**을 의미합니다.&lt;/li&gt;
&lt;li&gt;위치에 독립적인 자원을 위한 유일한 이름 역할을 합니다.&lt;/li&gt;
&lt;li&gt;리소스를 특정하는 이름입니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ISBN(국제표준도서번호)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
URI의 구조&amp;lt;/aside&amp;gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;https://
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Scheme(Protocol)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;브라우저가 사용하는 프로토콜입니다.&lt;/li&gt;
&lt;li&gt;http, https, ftp, file, &amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;www.aidenlim.dev
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Host(Domain name)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청을 처리하는 웹 서버입니다.&lt;/li&gt;
&lt;li&gt;IP 주소를 바로 사용할 수 있지만 도메인 이름을 받아서 사용하는 것이 일반적입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;:80
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Port&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;리소스에 접근할 때 사용되는 일종의 문(게이트)입니다.&lt;/li&gt;
&lt;li&gt;HTTP: 80 / HTTPS: 443이 표준 포트입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;/path/to/resource/
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Path&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;웹 서버에서의 리소스 경로입니다.&lt;/li&gt;
&lt;li&gt;웹 초기에는 실제 물리적인 위치를 나타냈으나 현재는 추상화된 형태를 표현합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;?key=value
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Query(Identifier)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;웹 서버에 제공하는 추가적인 변수입니다.&lt;/li&gt;
&lt;li&gt;&amp;amp;로 구분되는 Key=Value 형태의 데이터입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;#docs
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Fragment(Anchor)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;해당 자원 안에서의 특정 위치 (북마크)를 나타냅니다.&lt;/li&gt;
&lt;li&gt;HTML 문서의 특정 부분을 보여주기 위한 방법입니다.&amp;lt;aside&amp;gt;   &lt;b&gt;또다시 HTTP 이야기&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;H&lt;/b&gt;yper &lt;b&gt;T&lt;/b&gt;ext &lt;b&gt;T&lt;/b&gt;ransfer &lt;b&gt;P&lt;/b&gt;rotocol&lt;/li&gt;
&lt;li&gt;&amp;rArr; Web에서 이루어지는 **데이터 교환의 기초(**약속)입니다.&lt;/li&gt;
&lt;li&gt;요청(Request)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;클라이언트 &amp;rarr; 서버&lt;/b&gt;로 전송되는 메세지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;응답(Response)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;서버 &amp;rarr; 클라이언트&lt;/b&gt;로 전송되는 메세지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;특성
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Stateless (무상태)&lt;/b&gt;&amp;rarr; 모든 응답과 요청은 독립적입니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 서버가 클라이언트의 상태를 보존하지 않습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Connectless (비연결성)&lt;/b&gt;&amp;rarr; 연결을 유지하지 않으므로 서버 자원을 효율적으로 사용 가능합니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 이후 HTTP1.1이 등장하면서 개선되었습니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 요청 받고 응답을 주고나면 연결을 종료합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;&amp;rArr; 단순하며 확장성이 용이한 구조&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&amp;lt;/aside&amp;gt;&lt;b&gt;요청(Request)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트가 서버로 전달해서 서버의 어떤 행동(action)이 일어나게 하는 것을 의미합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;응답(Response)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 대한 서버의 답변을 의미합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;Http Message의 구조&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청과 응답은 구조가 비슷합니다.&lt;/li&gt;
&lt;li&gt;시작(Start Line) - 실행되어야할 요청, 요청에 대한 성공 또는 실패&lt;/li&gt;
&lt;li&gt;HTTP Header - 요청에 대한 설명, 본문에 대한 설명&lt;/li&gt;
&lt;li&gt;빈줄(Blank Line) - 메타 정보의 끝을 알림&lt;/li&gt;
&lt;li&gt;HTTP Body - 요청과 관련된 내용, 응답과 관련된 문서&lt;/li&gt;
&lt;/ul&gt;
&amp;lt;aside&amp;gt;   예시출처 : MDN
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Start Line
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Method, Traget, HTTP Version&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Headers
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 필요한 여러가지 메타 정보&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Body
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 필요한 여러가지 데이터&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;응답(Response)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Start Line
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HTTP Version, Status Code, Status Message&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Headers
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;응답에 대한 열가지 메타 정보&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Body
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청을 처리한 여러가지 데이터 &amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
HTTP Request Methods&amp;lt;/aside&amp;gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청 자원에 대한 &lt;b&gt;행위&lt;/b&gt;를 나타냅니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;어떤 동작을 하려고 하는지를 나타내요!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;GET, POST, PUT, DELETE, &amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&amp;rarr; REST 이야기할 때 조금 더 알아보아요!&amp;lt;aside&amp;gt; &amp;lt;img src=&quot;/icons/checkmark-square_red.svg&quot; alt=&quot;/icons/checkmark-square_red.svg&quot; width=&quot;40px&quot; /&amp;gt; MDN 공식 문서 &lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/Status&quot;&gt;https://developer.mozilla.org/ko/docs/Web/HTTP/Status&lt;/a&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HTTP 요청에 대해 &lt;b&gt;성공 여부를 나타내는 코드값&lt;/b&gt;입니다.&lt;/li&gt;
&lt;li&gt;크게 5개의 그룹으로 나누어집니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1XX : Informational Response&lt;/li&gt;
&lt;li&gt;2XX : Successful Response
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;성공 - 에러없이 요청이 성공.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020156_1&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/9cf77578-72f4-4a66-9fec-d6f7bdd31935/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청이 성공했고 새로운 데이터가 만들어짐.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020157_2&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/f81709dc-1871-4c0d-82bd-7b599b49d62b/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청은 정상적이나 아직 처리가 완료되지 않음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020157_3&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/bd260605-a321-43d8-aceb-8c6b544070fa/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청은 성공적으로 처리했으나 전송할 데이터(Response Body)가 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020157_4&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/e8e9833a-9936-44fb-b88b-a50ba20663b6/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 204 No Content&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 202 Accepted&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 201 Created&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 200 OK&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;3XX : Redirection Message&lt;/li&gt;
&lt;li&gt;4XX : Client Error Response
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트의 요청이 잘못되었음.&lt;/li&gt;
&lt;li&gt;서버는 해당 요청을 처리하지 않음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_5&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/83ef215d-afd0-4b5a-bc22-26c9a1de87b5/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트가 인증이 되지 않았거나 인증정보가 유효하지 않음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_6&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/42ebd32e-239b-4278-bc4d-d3a485ca7b9e/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버에서 요청을 이해했으나 금지된 요청.&lt;/li&gt;
&lt;li&gt;요청에 대한 자원이 있으나 수행할 권한이 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_7&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/e9aae144-31bf-4567-b75d-98d028fd4c99/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청한 자원을 찾을 수 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_8&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/ac7109e6-cbad-42ae-ae6f-352b61225a84/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 404 Not Found&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 403 Forbidden&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 401 Unauthorized&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 400 Bad Request&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;5XX : Server Error Response
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 대해 서버가 수행하지 못하는 상황.&lt;/li&gt;
&lt;li&gt;서버가 동작하지 않는다는 포괄적인 의미가 내포됨.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_9&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/ec5c10e1-866f-409d-9b5b-bc5b99cb9162/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버가 요청을 처리할 준비가 되지 않았음.&lt;/li&gt;
&lt;li&gt;서버가 다운되었거나 일시적으로 중단된 상태.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020159_10&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/4d6a537a-8adb-4d03-930e-40a8cb0ec3a2/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 503 Service Unavailable&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 500 Internal Server Error&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;b&gt;02.&lt;/b&gt; URL&amp;lt;/aside&amp;gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;우리가 어떤 요청을 하는 대상을 자원(Resource)이라고 합니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 문서, 사진, 영상 등이 바로 자원이에요!&lt;/li&gt;
&lt;li&gt;이러한 자원을 식별하기 위해 **URI(Uniform Resource Identifier)**를 사용합니다. &amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
URI (Uniform Resource Identifier)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;통합 자원 식별자입니다.&lt;/li&gt;
&lt;li&gt;인터넷의 자원을 식별할 수 있는 유일한 문자열입니다.&lt;/li&gt;
&lt;li&gt;하위 개념 - URN, URL&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;&amp;rArr; 일반적으로 URN을 사용하는 비중이 낮기때문에 URI와 URL을 같은 의미로 사용하기도 해요!&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;**통합 자원 위치(Location)**를 의미합니다.&lt;/li&gt;
&lt;li&gt;웹상에 자원이 어디 있는지 나타내기 위한 문자열입니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 어디에서 어떻게 리소스를 가져와야 하는지 나타내는 문자열이에요!&lt;/li&gt;
&lt;li&gt;흔히 말하는 웹 주소, 링크입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;URN(Uniform Resource Name)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;**통합 자원 이름(Name)**을 의미합니다.&lt;/li&gt;
&lt;li&gt;위치에 독립적인 자원을 위한 유일한 이름 역할을 합니다.&lt;/li&gt;
&lt;li&gt;리소스를 특정하는 이름입니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ISBN(국제표준도서번호)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
URI의 구조&amp;lt;/aside&amp;gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;https://
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Scheme(Protocol)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;브라우저가 사용하는 프로토콜입니다.&lt;/li&gt;
&lt;li&gt;http, https, ftp, file, &amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;www.aidenlim.dev
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Host(Domain name)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청을 처리하는 웹 서버입니다.&lt;/li&gt;
&lt;li&gt;IP 주소를 바로 사용할 수 있지만 도메인 이름을 받아서 사용하는 것이 일반적입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;:80
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Port&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;리소스에 접근할 때 사용되는 일종의 문(게이트)입니다.&lt;/li&gt;
&lt;li&gt;HTTP: 80 / HTTPS: 443이 표준 포트입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;/path/to/resource/
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Path&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;웹 서버에서의 리소스 경로입니다.&lt;/li&gt;
&lt;li&gt;웹 초기에는 실제 물리적인 위치를 나타냈으나 현재는 추상화된 형태를 표현합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;?key=value
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Query(Identifier)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;웹 서버에 제공하는 추가적인 변수입니다.&lt;/li&gt;
&lt;li&gt;&amp;amp;로 구분되는 Key=Value 형태의 데이터입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;#docs
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Fragment(Anchor)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;해당 자원 안에서의 특정 위치 (북마크)를 나타냅니다.&lt;/li&gt;
&lt;li&gt;HTML 문서의 특정 부분을 보여주기 위한 방법입니다.&amp;lt;aside&amp;gt;   &lt;b&gt;또다시 HTTP 이야기&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;H&lt;/b&gt;yper &lt;b&gt;T&lt;/b&gt;ext &lt;b&gt;T&lt;/b&gt;ransfer &lt;b&gt;P&lt;/b&gt;rotocol&lt;/li&gt;
&lt;li&gt;&amp;rArr; Web에서 이루어지는 **데이터 교환의 기초(**약속)입니다.&lt;/li&gt;
&lt;li&gt;요청(Request)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;클라이언트 &amp;rarr; 서버&lt;/b&gt;로 전송되는 메세지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;응답(Response)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;서버 &amp;rarr; 클라이언트&lt;/b&gt;로 전송되는 메세지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;특성
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Stateless (무상태)&lt;/b&gt;&amp;rarr; 모든 응답과 요청은 독립적입니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 서버가 클라이언트의 상태를 보존하지 않습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Connectless (비연결성)&lt;/b&gt;&amp;rarr; 연결을 유지하지 않으므로 서버 자원을 효율적으로 사용 가능합니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 이후 HTTP1.1이 등장하면서 개선되었습니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 요청 받고 응답을 주고나면 연결을 종료합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;&amp;rArr; 단순하며 확장성이 용이한 구조&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&amp;lt;/aside&amp;gt;&lt;b&gt;요청(Request)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트가 서버로 전달해서 서버의 어떤 행동(action)이 일어나게 하는 것을 의미합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;응답(Response)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 대한 서버의 답변을 의미합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;Http Message의 구조&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청과 응답은 구조가 비슷합니다.&lt;/li&gt;
&lt;li&gt;시작(Start Line) - 실행되어야할 요청, 요청에 대한 성공 또는 실패&lt;/li&gt;
&lt;li&gt;HTTP Header - 요청에 대한 설명, 본문에 대한 설명&lt;/li&gt;
&lt;li&gt;빈줄(Blank Line) - 메타 정보의 끝을 알림&lt;/li&gt;
&lt;li&gt;HTTP Body - 요청과 관련된 내용, 응답과 관련된 문서&lt;/li&gt;
&lt;/ul&gt;
&amp;lt;aside&amp;gt;   예시출처 : MDN
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Start Line
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Method, Traget, HTTP Version&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Headers
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 필요한 여러가지 메타 정보&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Body
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 필요한 여러가지 데이터&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;응답(Response)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Start Line
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HTTP Version, Status Code, Status Message&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Headers
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;응답에 대한 열가지 메타 정보&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Body
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청을 처리한 여러가지 데이터 &amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
HTTP Request Methods&amp;lt;/aside&amp;gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청 자원에 대한 &lt;b&gt;행위&lt;/b&gt;를 나타냅니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;어떤 동작을 하려고 하는지를 나타내요!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;GET, POST, PUT, DELETE, &amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&amp;rarr; REST 이야기할 때 조금 더 알아보아요!&amp;lt;aside&amp;gt; &amp;lt;img src=&quot;/icons/checkmark-square_red.svg&quot; alt=&quot;/icons/checkmark-square_red.svg&quot; width=&quot;40px&quot; /&amp;gt; MDN 공식 문서 &lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/Status&quot;&gt;https://developer.mozilla.org/ko/docs/Web/HTTP/Status&lt;/a&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HTTP 요청에 대해 &lt;b&gt;성공 여부를 나타내는 코드값&lt;/b&gt;입니다.&lt;/li&gt;
&lt;li&gt;크게 5개의 그룹으로 나누어집니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1XX : Informational Response&lt;/li&gt;
&lt;li&gt;2XX : Successful Response
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;성공 - 에러없이 요청이 성공.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020156_1&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/9cf77578-72f4-4a66-9fec-d6f7bdd31935/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청이 성공했고 새로운 데이터가 만들어짐.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020157_2&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/f81709dc-1871-4c0d-82bd-7b599b49d62b/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청은 정상적이나 아직 처리가 완료되지 않음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020157_3&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/bd260605-a321-43d8-aceb-8c6b544070fa/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청은 성공적으로 처리했으나 전송할 데이터(Response Body)가 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020157_4&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/e8e9833a-9936-44fb-b88b-a50ba20663b6/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 204 No Content&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 202 Accepted&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 201 Created&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 200 OK&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;3XX : Redirection Message&lt;/li&gt;
&lt;li&gt;4XX : Client Error Response
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트의 요청이 잘못되었음.&lt;/li&gt;
&lt;li&gt;서버는 해당 요청을 처리하지 않음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_5&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/83ef215d-afd0-4b5a-bc22-26c9a1de87b5/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트가 인증이 되지 않았거나 인증정보가 유효하지 않음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_6&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/42ebd32e-239b-4278-bc4d-d3a485ca7b9e/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버에서 요청을 이해했으나 금지된 요청.&lt;/li&gt;
&lt;li&gt;요청에 대한 자원이 있으나 수행할 권한이 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_7&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/e9aae144-31bf-4567-b75d-98d028fd4c99/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청한 자원을 찾을 수 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_8&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/ac7109e6-cbad-42ae-ae6f-352b61225a84/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 404 Not Found&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 403 Forbidden&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 401 Unauthorized&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 400 Bad Request&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;5XX : Server Error Response
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 대해 서버가 수행하지 못하는 상황.&lt;/li&gt;
&lt;li&gt;서버가 동작하지 않는다는 포괄적인 의미가 내포됨.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_9&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/ec5c10e1-866f-409d-9b5b-bc5b99cb9162/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버가 요청을 처리할 준비가 되지 않았음.&lt;/li&gt;
&lt;li&gt;서버가 다운되었거나 일시적으로 중단된 상태.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020159_10&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/4d6a537a-8adb-4d03-930e-40a8cb0ec3a2/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 503 Service Unavailable&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 500 Internal Server Error&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;b&gt;02.&lt;/b&gt; URL&amp;lt;/aside&amp;gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;우리가 어떤 요청을 하는 대상을 자원(Resource)이라고 합니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 문서, 사진, 영상 등이 바로 자원이에요!&lt;/li&gt;
&lt;li&gt;이러한 자원을 식별하기 위해 **URI(Uniform Resource Identifier)**를 사용합니다. &amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
URI (Uniform Resource Identifier)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;통합 자원 식별자입니다.&lt;/li&gt;
&lt;li&gt;인터넷의 자원을 식별할 수 있는 유일한 문자열입니다.&lt;/li&gt;
&lt;li&gt;하위 개념 - URN, URL&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;&amp;rArr; 일반적으로 URN을 사용하는 비중이 낮기때문에 URI와 URL을 같은 의미로 사용하기도 해요!&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;**통합 자원 위치(Location)**를 의미합니다.&lt;/li&gt;
&lt;li&gt;웹상에 자원이 어디 있는지 나타내기 위한 문자열입니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 어디에서 어떻게 리소스를 가져와야 하는지 나타내는 문자열이에요!&lt;/li&gt;
&lt;li&gt;흔히 말하는 웹 주소, 링크입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;URN(Uniform Resource Name)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;**통합 자원 이름(Name)**을 의미합니다.&lt;/li&gt;
&lt;li&gt;위치에 독립적인 자원을 위한 유일한 이름 역할을 합니다.&lt;/li&gt;
&lt;li&gt;리소스를 특정하는 이름입니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ISBN(국제표준도서번호)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
URI의 구조&amp;lt;/aside&amp;gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;https://
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Scheme(Protocol)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;브라우저가 사용하는 프로토콜입니다.&lt;/li&gt;
&lt;li&gt;http, https, ftp, file, &amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;www.aidenlim.dev
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Host(Domain name)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청을 처리하는 웹 서버입니다.&lt;/li&gt;
&lt;li&gt;IP 주소를 바로 사용할 수 있지만 도메인 이름을 받아서 사용하는 것이 일반적입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;:80
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Port&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;리소스에 접근할 때 사용되는 일종의 문(게이트)입니다.&lt;/li&gt;
&lt;li&gt;HTTP: 80 / HTTPS: 443이 표준 포트입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;/path/to/resource/
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Path&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;웹 서버에서의 리소스 경로입니다.&lt;/li&gt;
&lt;li&gt;웹 초기에는 실제 물리적인 위치를 나타냈으나 현재는 추상화된 형태를 표현합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;?key=value
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Query(Identifier)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;웹 서버에 제공하는 추가적인 변수입니다.&lt;/li&gt;
&lt;li&gt;&amp;amp;로 구분되는 Key=Value 형태의 데이터입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;#docs
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Fragment(Anchor)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;해당 자원 안에서의 특정 위치 (북마크)를 나타냅니다.&lt;/li&gt;
&lt;li&gt;HTML 문서의 특정 부분을 보여주기 위한 방법입니다.&amp;lt;aside&amp;gt;   &lt;b&gt;또다시 HTTP 이야기&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;H&lt;/b&gt;yper &lt;b&gt;T&lt;/b&gt;ext &lt;b&gt;T&lt;/b&gt;ransfer &lt;b&gt;P&lt;/b&gt;rotocol&lt;/li&gt;
&lt;li&gt;&amp;rArr; Web에서 이루어지는 **데이터 교환의 기초(**약속)입니다.&lt;/li&gt;
&lt;li&gt;요청(Request)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;클라이언트 &amp;rarr; 서버&lt;/b&gt;로 전송되는 메세지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;응답(Response)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;서버 &amp;rarr; 클라이언트&lt;/b&gt;로 전송되는 메세지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;특성
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Stateless (무상태)&lt;/b&gt;&amp;rarr; 모든 응답과 요청은 독립적입니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 서버가 클라이언트의 상태를 보존하지 않습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Connectless (비연결성)&lt;/b&gt;&amp;rarr; 연결을 유지하지 않으므로 서버 자원을 효율적으로 사용 가능합니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 이후 HTTP1.1이 등장하면서 개선되었습니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 요청 받고 응답을 주고나면 연결을 종료합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;&amp;rArr; 단순하며 확장성이 용이한 구조&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&amp;lt;/aside&amp;gt;&lt;b&gt;요청(Request)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트가 서버로 전달해서 서버의 어떤 행동(action)이 일어나게 하는 것을 의미합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;응답(Response)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 대한 서버의 답변을 의미합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;Http Message의 구조&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청과 응답은 구조가 비슷합니다.&lt;/li&gt;
&lt;li&gt;시작(Start Line) - 실행되어야할 요청, 요청에 대한 성공 또는 실패&lt;/li&gt;
&lt;li&gt;HTTP Header - 요청에 대한 설명, 본문에 대한 설명&lt;/li&gt;
&lt;li&gt;빈줄(Blank Line) - 메타 정보의 끝을 알림&lt;/li&gt;
&lt;li&gt;HTTP Body - 요청과 관련된 내용, 응답과 관련된 문서&lt;/li&gt;
&lt;/ul&gt;
&amp;lt;aside&amp;gt;   예시출처 : MDN
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Start Line
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Method, Traget, HTTP Version&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Headers
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 필요한 여러가지 메타 정보&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Body
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 필요한 여러가지 데이터&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;응답(Response)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Start Line
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HTTP Version, Status Code, Status Message&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Headers
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;응답에 대한 열가지 메타 정보&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Body
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청을 처리한 여러가지 데이터 &amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
HTTP Request Methods&amp;lt;/aside&amp;gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청 자원에 대한 &lt;b&gt;행위&lt;/b&gt;를 나타냅니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;어떤 동작을 하려고 하는지를 나타내요!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;GET, POST, PUT, DELETE, &amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&amp;rarr; REST 이야기할 때 조금 더 알아보아요!&amp;lt;aside&amp;gt; &amp;lt;img src=&quot;/icons/checkmark-square_red.svg&quot; alt=&quot;/icons/checkmark-square_red.svg&quot; width=&quot;40px&quot; /&amp;gt; MDN 공식 문서 &lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/Status&quot;&gt;https://developer.mozilla.org/ko/docs/Web/HTTP/Status&lt;/a&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HTTP 요청에 대해 &lt;b&gt;성공 여부를 나타내는 코드값&lt;/b&gt;입니다.&lt;/li&gt;
&lt;li&gt;크게 5개의 그룹으로 나누어집니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1XX : Informational Response&lt;/li&gt;
&lt;li&gt;2XX : Successful Response
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;성공 - 에러없이 요청이 성공.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020156_1&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/9cf77578-72f4-4a66-9fec-d6f7bdd31935/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청이 성공했고 새로운 데이터가 만들어짐.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020157_2&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/f81709dc-1871-4c0d-82bd-7b599b49d62b/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청은 정상적이나 아직 처리가 완료되지 않음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020157_3&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/bd260605-a321-43d8-aceb-8c6b544070fa/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청은 성공적으로 처리했으나 전송할 데이터(Response Body)가 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020157_4&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/e8e9833a-9936-44fb-b88b-a50ba20663b6/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 204 No Content&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 202 Accepted&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 201 Created&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 200 OK&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;3XX : Redirection Message&lt;/li&gt;
&lt;li&gt;4XX : Client Error Response
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트의 요청이 잘못되었음.&lt;/li&gt;
&lt;li&gt;서버는 해당 요청을 처리하지 않음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_5&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/83ef215d-afd0-4b5a-bc22-26c9a1de87b5/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트가 인증이 되지 않았거나 인증정보가 유효하지 않음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_6&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/42ebd32e-239b-4278-bc4d-d3a485ca7b9e/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버에서 요청을 이해했으나 금지된 요청.&lt;/li&gt;
&lt;li&gt;요청에 대한 자원이 있으나 수행할 권한이 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_7&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/e9aae144-31bf-4567-b75d-98d028fd4c99/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청한 자원을 찾을 수 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_8&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/ac7109e6-cbad-42ae-ae6f-352b61225a84/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 404 Not Found&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 403 Forbidden&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 401 Unauthorized&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 400 Bad Request&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;5XX : Server Error Response
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 대해 서버가 수행하지 못하는 상황.&lt;/li&gt;
&lt;li&gt;서버가 동작하지 않는다는 포괄적인 의미가 내포됨.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_9&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/ec5c10e1-866f-409d-9b5b-bc5b99cb9162/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버가 요청을 처리할 준비가 되지 않았음.&lt;/li&gt;
&lt;li&gt;서버가 다운되었거나 일시적으로 중단된 상태.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020159_10&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/4d6a537a-8adb-4d03-930e-40a8cb0ec3a2/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 503 Service Unavailable&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 500 Internal Server Error&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;b&gt;02.&lt;/b&gt; URL&amp;lt;/aside&amp;gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;우리가 어떤 요청을 하는 대상을 자원(Resource)이라고 합니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 문서, 사진, 영상 등이 바로 자원이에요!&lt;/li&gt;
&lt;li&gt;이러한 자원을 식별하기 위해 **URI(Uniform Resource Identifier)**를 사용합니다. &amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
URI (Uniform Resource Identifier)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;통합 자원 식별자입니다.&lt;/li&gt;
&lt;li&gt;인터넷의 자원을 식별할 수 있는 유일한 문자열입니다.&lt;/li&gt;
&lt;li&gt;하위 개념 - URN, URL&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;&amp;rArr; 일반적으로 URN을 사용하는 비중이 낮기때문에 URI와 URL을 같은 의미로 사용하기도 해요!&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;**통합 자원 위치(Location)**를 의미합니다.&lt;/li&gt;
&lt;li&gt;웹상에 자원이 어디 있는지 나타내기 위한 문자열입니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 어디에서 어떻게 리소스를 가져와야 하는지 나타내는 문자열이에요!&lt;/li&gt;
&lt;li&gt;흔히 말하는 웹 주소, 링크입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;URN(Uniform Resource Name)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;**통합 자원 이름(Name)**을 의미합니다.&lt;/li&gt;
&lt;li&gt;위치에 독립적인 자원을 위한 유일한 이름 역할을 합니다.&lt;/li&gt;
&lt;li&gt;리소스를 특정하는 이름입니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ISBN(국제표준도서번호)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
URI의 구조&amp;lt;/aside&amp;gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;https://
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Scheme(Protocol)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;브라우저가 사용하는 프로토콜입니다.&lt;/li&gt;
&lt;li&gt;http, https, ftp, file, &amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;www.aidenlim.dev
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Host(Domain name)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청을 처리하는 웹 서버입니다.&lt;/li&gt;
&lt;li&gt;IP 주소를 바로 사용할 수 있지만 도메인 이름을 받아서 사용하는 것이 일반적입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;:80
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Port&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;리소스에 접근할 때 사용되는 일종의 문(게이트)입니다.&lt;/li&gt;
&lt;li&gt;HTTP: 80 / HTTPS: 443이 표준 포트입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;/path/to/resource/
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Path&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;웹 서버에서의 리소스 경로입니다.&lt;/li&gt;
&lt;li&gt;웹 초기에는 실제 물리적인 위치를 나타냈으나 현재는 추상화된 형태를 표현합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;?key=value
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Query(Identifier)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;웹 서버에 제공하는 추가적인 변수입니다.&lt;/li&gt;
&lt;li&gt;&amp;amp;로 구분되는 Key=Value 형태의 데이터입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;#docs
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Fragment(Anchor)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;해당 자원 안에서의 특정 위치 (북마크)를 나타냅니다.&lt;/li&gt;
&lt;li&gt;HTML 문서의 특정 부분을 보여주기 위한 방법입니다.&amp;lt;aside&amp;gt;   &lt;b&gt;또다시 HTTP 이야기&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;H&lt;/b&gt;yper &lt;b&gt;T&lt;/b&gt;ext &lt;b&gt;T&lt;/b&gt;ransfer &lt;b&gt;P&lt;/b&gt;rotocol&lt;/li&gt;
&lt;li&gt;&amp;rArr; Web에서 이루어지는 **데이터 교환의 기초(**약속)입니다.&lt;/li&gt;
&lt;li&gt;요청(Request)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;클라이언트 &amp;rarr; 서버&lt;/b&gt;로 전송되는 메세지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;응답(Response)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;서버 &amp;rarr; 클라이언트&lt;/b&gt;로 전송되는 메세지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;특성
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Stateless (무상태)&lt;/b&gt;&amp;rarr; 모든 응답과 요청은 독립적입니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 서버가 클라이언트의 상태를 보존하지 않습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Connectless (비연결성)&lt;/b&gt;&amp;rarr; 연결을 유지하지 않으므로 서버 자원을 효율적으로 사용 가능합니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 이후 HTTP1.1이 등장하면서 개선되었습니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 요청 받고 응답을 주고나면 연결을 종료합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;&amp;rArr; 단순하며 확장성이 용이한 구조&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&amp;lt;/aside&amp;gt;&lt;b&gt;요청(Request)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트가 서버로 전달해서 서버의 어떤 행동(action)이 일어나게 하는 것을 의미합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;응답(Response)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 대한 서버의 답변을 의미합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;Http Message의 구조&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청과 응답은 구조가 비슷합니다.&lt;/li&gt;
&lt;li&gt;시작(Start Line) - 실행되어야할 요청, 요청에 대한 성공 또는 실패&lt;/li&gt;
&lt;li&gt;HTTP Header - 요청에 대한 설명, 본문에 대한 설명&lt;/li&gt;
&lt;li&gt;빈줄(Blank Line) - 메타 정보의 끝을 알림&lt;/li&gt;
&lt;li&gt;HTTP Body - 요청과 관련된 내용, 응답과 관련된 문서&lt;/li&gt;
&lt;/ul&gt;
&amp;lt;aside&amp;gt;   예시출처 : MDN
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Start Line
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Method, Traget, HTTP Version&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Headers
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 필요한 여러가지 메타 정보&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Body
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 필요한 여러가지 데이터&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;응답(Response)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Start Line
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HTTP Version, Status Code, Status Message&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Headers
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;응답에 대한 열가지 메타 정보&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Body
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청을 처리한 여러가지 데이터 &amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
HTTP Request Methods&amp;lt;/aside&amp;gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청 자원에 대한 &lt;b&gt;행위&lt;/b&gt;를 나타냅니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;어떤 동작을 하려고 하는지를 나타내요!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;GET, POST, PUT, DELETE, &amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&amp;rarr; REST 이야기할 때 조금 더 알아보아요!&amp;lt;aside&amp;gt; &amp;lt;img src=&quot;/icons/checkmark-square_red.svg&quot; alt=&quot;/icons/checkmark-square_red.svg&quot; width=&quot;40px&quot; /&amp;gt; MDN 공식 문서 &lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/Status&quot;&gt;https://developer.mozilla.org/ko/docs/Web/HTTP/Status&lt;/a&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HTTP 요청에 대해 &lt;b&gt;성공 여부를 나타내는 코드값&lt;/b&gt;입니다.&lt;/li&gt;
&lt;li&gt;크게 5개의 그룹으로 나누어집니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;1XX : Informational Response&lt;/li&gt;
&lt;li&gt;2XX : Successful Response
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;성공 - 에러없이 요청이 성공.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020156_1&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/9cf77578-72f4-4a66-9fec-d6f7bdd31935/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청이 성공했고 새로운 데이터가 만들어짐.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020157_2&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/f81709dc-1871-4c0d-82bd-7b599b49d62b/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청은 정상적이나 아직 처리가 완료되지 않음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020157_3&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/bd260605-a321-43d8-aceb-8c6b544070fa/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청은 성공적으로 처리했으나 전송할 데이터(Response Body)가 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020157_4&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/e8e9833a-9936-44fb-b88b-a50ba20663b6/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 204 No Content&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 202 Accepted&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 201 Created&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 200 OK&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;3XX : Redirection Message&lt;/li&gt;
&lt;li&gt;4XX : Client Error Response
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트의 요청이 잘못되었음.&lt;/li&gt;
&lt;li&gt;서버는 해당 요청을 처리하지 않음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_5&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/83ef215d-afd0-4b5a-bc22-26c9a1de87b5/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트가 인증이 되지 않았거나 인증정보가 유효하지 않음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_6&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/42ebd32e-239b-4278-bc4d-d3a485ca7b9e/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버에서 요청을 이해했으나 금지된 요청.&lt;/li&gt;
&lt;li&gt;요청에 대한 자원이 있으나 수행할 권한이 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_7&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/e9aae144-31bf-4567-b75d-98d028fd4c99/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청한 자원을 찾을 수 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_8&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/ac7109e6-cbad-42ae-ae6f-352b61225a84/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 404 Not Found&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 403 Forbidden&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 401 Unauthorized&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 400 Bad Request&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;5XX : Server Error Response
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청에 대해 서버가 수행하지 못하는 상황.&lt;/li&gt;
&lt;li&gt;서버가 동작하지 않는다는 포괄적인 의미가 내포됨.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020158_9&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/ec5c10e1-866f-409d-9b5b-bc5b99cb9162/Untitled.png&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서버가 요청을 처리할 준비가 되지 않았음.&lt;/li&gt;
&lt;li&gt;서버가 다운되었거나 일시적으로 중단된 상태.&lt;/li&gt;
&lt;/ul&gt;
&lt;img id=&quot;img_1736260020159_10&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/4d6a537a-8adb-4d03-930e-40a8cb0ec3a2/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 503 Service Unavailable&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;출처 http.cat&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&amp;rarr; 500 Internal Server Error&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;b&gt;02.&lt;/b&gt; URL&amp;lt;/aside&amp;gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;우리가 어떤 요청을 하는 대상을 자원(Resource)이라고 합니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 문서, 사진, 영상 등이 바로 자원이에요!&lt;/li&gt;
&lt;li&gt;이러한 자원을 식별하기 위해 **URI(Uniform Resource Identifier)**를 사용합니다. &amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
URI (Uniform Resource Identifier)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;통합 자원 식별자입니다.&lt;/li&gt;
&lt;li&gt;인터넷의 자원을 식별할 수 있는 유일한 문자열입니다.&lt;/li&gt;
&lt;li&gt;하위 개념 - URN, URL&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;&amp;rArr; 일반적으로 URN을 사용하는 비중이 낮기때문에 URI와 URL을 같은 의미로 사용하기도 해요!&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;**통합 자원 위치(Location)**를 의미합니다.&lt;/li&gt;
&lt;li&gt;웹상에 자원이 어디 있는지 나타내기 위한 문자열입니다.&lt;/li&gt;
&lt;li&gt;&amp;rarr; 어디에서 어떻게 리소스를 가져와야 하는지 나타내는 문자열이에요!&lt;/li&gt;
&lt;li&gt;흔히 말하는 웹 주소, 링크입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;URN(Uniform Resource Name)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;**통합 자원 이름(Name)**을 의미합니다.&lt;/li&gt;
&lt;li&gt;위치에 독립적인 자원을 위한 유일한 이름 역할을 합니다.&lt;/li&gt;
&lt;li&gt;리소스를 특정하는 이름입니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ISBN(국제표준도서번호)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
URI의 구조&amp;lt;/aside&amp;gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;https://
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Scheme(Protocol)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;브라우저가 사용하는 프로토콜입니다.&lt;/li&gt;
&lt;li&gt;http, https, ftp, file, &amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;www.aidenlim.dev
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Host(Domain name)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요청을 처리하는 웹 서버입니다.&lt;/li&gt;
&lt;li&gt;IP 주소를 바로 사용할 수 있지만 도메인 이름을 받아서 사용하는 것이 일반적입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;:80
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Port&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;리소스에 접근할 때 사용되는 일종의 문(게이트)입니다.&lt;/li&gt;
&lt;li&gt;HTTP: 80 / HTTPS: 443이 표준 포트입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;/path/to/resource/
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Path&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;웹 서버에서의 리소스 경로입니다.&lt;/li&gt;
&lt;li&gt;웹 초기에는 실제 물리적인 위치를 나타냈으나 현재는 추상화된 형태를 표현합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;?key=value
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Query(Identifier)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;웹 서버에 제공하는 추가적인 변수입니다.&lt;/li&gt;
&lt;li&gt;&amp;amp;로 구분되는 Key=Value 형태의 데이터입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;#docs
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Fragment(Anchor)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;해당 자원 안에서의 특정 위치 (북마크)를 나타냅니다.&lt;/li&gt;
&lt;li&gt;HTML 문서의 특정 부분을 보여주기 위한 방법입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt; ☝ &lt;b&gt;&lt;a href=&quot;https://www.aidenlim.dev:80/path/to/resource/?key=value#docs&quot;&gt;https://www.aidenlim.dev:80/path/to/resource/?key=value#docs&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;URL(Uniform Resource Locator)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt;   &lt;b&gt;웹에서의 자원의 식별&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt; ✔️ &lt;b&gt;자원을 식별하기 위해 사용하는 URL에 대해 알아볼까요?&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;li&gt;HTTP Status Code&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt; &amp;lt;img src=&quot;/icons/checkmark-square_red.svg&quot; alt=&quot;/icons/checkmark-square_red.svg&quot; width=&quot;40px&quot; /&amp;gt; MDN 공식문서 &lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/Methods&quot;&gt;https://developer.mozilla.org/ko/docs/Web/HTTP/Methods&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;요청(Request)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;img id=&quot;img_1736260020155_0&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/36a6c2a7-de46-44cb-8268-0c29fd35cad0/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;HTTP Message&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt; ☝ &lt;b&gt;&lt;a href=&quot;https://www.aidenlim.dev:80/path/to/resource/?key=value#docs&quot;&gt;https://www.aidenlim.dev:80/path/to/resource/?key=value#docs&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;URL(Uniform Resource Locator)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt;   &lt;b&gt;웹에서의 자원의 식별&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt; ✔️ &lt;b&gt;자원을 식별하기 위해 사용하는 URL에 대해 알아볼까요?&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;li&gt;HTTP Status Code&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt; &amp;lt;img src=&quot;/icons/checkmark-square_red.svg&quot; alt=&quot;/icons/checkmark-square_red.svg&quot; width=&quot;40px&quot; /&amp;gt; MDN 공식문서 &lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/Methods&quot;&gt;https://developer.mozilla.org/ko/docs/Web/HTTP/Methods&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;요청(Request)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;img id=&quot;img_1736260020155_0&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/36a6c2a7-de46-44cb-8268-0c29fd35cad0/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;HTTP Message&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt; ☝ &lt;b&gt;&lt;a href=&quot;https://www.aidenlim.dev:80/path/to/resource/?key=value#docs&quot;&gt;https://www.aidenlim.dev:80/path/to/resource/?key=value#docs&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;URL(Uniform Resource Locator)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt;   &lt;b&gt;웹에서의 자원의 식별&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt; ✔️ &lt;b&gt;자원을 식별하기 위해 사용하는 URL에 대해 알아볼까요?&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;li&gt;HTTP Status Code&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt; &amp;lt;img src=&quot;/icons/checkmark-square_red.svg&quot; alt=&quot;/icons/checkmark-square_red.svg&quot; width=&quot;40px&quot; /&amp;gt; MDN 공식문서 &lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/Methods&quot;&gt;https://developer.mozilla.org/ko/docs/Web/HTTP/Methods&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;요청(Request)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;img id=&quot;img_1736260020155_0&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/36a6c2a7-de46-44cb-8268-0c29fd35cad0/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;HTTP Message&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt; ☝ &lt;b&gt;&lt;a href=&quot;https://www.aidenlim.dev:80/path/to/resource/?key=value#docs&quot;&gt;https://www.aidenlim.dev:80/path/to/resource/?key=value#docs&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;URL(Uniform Resource Locator)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt;   &lt;b&gt;웹에서의 자원의 식별&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt; ✔️ &lt;b&gt;자원을 식별하기 위해 사용하는 URL에 대해 알아볼까요?&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;li&gt;HTTP Status Code&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt; &amp;lt;img src=&quot;/icons/checkmark-square_red.svg&quot; alt=&quot;/icons/checkmark-square_red.svg&quot; width=&quot;40px&quot; /&amp;gt; MDN 공식문서 &lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/Methods&quot;&gt;https://developer.mozilla.org/ko/docs/Web/HTTP/Methods&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;요청(Request)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;img id=&quot;img_1736260020155_0&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/36a6c2a7-de46-44cb-8268-0c29fd35cad0/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;HTTP Message&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt; ☝ &lt;b&gt;&lt;a href=&quot;https://www.aidenlim.dev:80/path/to/resource/?key=value#docs&quot;&gt;https://www.aidenlim.dev:80/path/to/resource/?key=value#docs&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;URL(Uniform Resource Locator)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt;   &lt;b&gt;웹에서의 자원의 식별&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt; ✔️ &lt;b&gt;자원을 식별하기 위해 사용하는 URL에 대해 알아볼까요?&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;li&gt;HTTP Status Code&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt; &amp;lt;img src=&quot;/icons/checkmark-square_red.svg&quot; alt=&quot;/icons/checkmark-square_red.svg&quot; width=&quot;40px&quot; /&amp;gt; MDN 공식문서 &lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/Methods&quot;&gt;https://developer.mozilla.org/ko/docs/Web/HTTP/Methods&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;요청(Request)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;img id=&quot;img_1736260020155_0&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/36a6c2a7-de46-44cb-8268-0c29fd35cad0/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;HTTP Message&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt; ☝ &lt;b&gt;&lt;a href=&quot;https://www.aidenlim.dev:80/path/to/resource/?key=value#docs&quot;&gt;https://www.aidenlim.dev:80/path/to/resource/?key=value#docs&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;URL(Uniform Resource Locator)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt;   &lt;b&gt;웹에서의 자원의 식별&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt; ✔️ &lt;b&gt;자원을 식별하기 위해 사용하는 URL에 대해 알아볼까요?&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;li&gt;HTTP Status Code&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt; &amp;lt;img src=&quot;/icons/checkmark-square_red.svg&quot; alt=&quot;/icons/checkmark-square_red.svg&quot; width=&quot;40px&quot; /&amp;gt; MDN 공식문서 &lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/Methods&quot;&gt;https://developer.mozilla.org/ko/docs/Web/HTTP/Methods&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;요청(Request)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;img id=&quot;img_1736260020155_0&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/36a6c2a7-de46-44cb-8268-0c29fd35cad0/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;HTTP Message&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt; ☝ &lt;b&gt;&lt;a href=&quot;https://www.aidenlim.dev:80/path/to/resource/?key=value#docs&quot;&gt;https://www.aidenlim.dev:80/path/to/resource/?key=value#docs&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;URL(Uniform Resource Locator)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt;   &lt;b&gt;웹에서의 자원의 식별&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt; ✔️ &lt;b&gt;자원을 식별하기 위해 사용하는 URL에 대해 알아볼까요?&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;li&gt;HTTP Status Code&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt; &amp;lt;img src=&quot;/icons/checkmark-square_red.svg&quot; alt=&quot;/icons/checkmark-square_red.svg&quot; width=&quot;40px&quot; /&amp;gt; MDN 공식문서 &lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/Methods&quot;&gt;https://developer.mozilla.org/ko/docs/Web/HTTP/Methods&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;요청(Request)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;img id=&quot;img_1736260020155_0&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/36a6c2a7-de46-44cb-8268-0c29fd35cad0/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;HTTP Message&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt; ☝ &lt;b&gt;&lt;a href=&quot;https://www.aidenlim.dev:80/path/to/resource/?key=value#docs&quot;&gt;https://www.aidenlim.dev:80/path/to/resource/?key=value#docs&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;URL(Uniform Resource Locator)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt;   &lt;b&gt;웹에서의 자원의 식별&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt; ✔️ &lt;b&gt;자원을 식별하기 위해 사용하는 URL에 대해 알아볼까요?&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;li&gt;HTTP Status Code&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt; &amp;lt;img src=&quot;/icons/checkmark-square_red.svg&quot; alt=&quot;/icons/checkmark-square_red.svg&quot; width=&quot;40px&quot; /&amp;gt; MDN 공식문서 &lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/Methods&quot;&gt;https://developer.mozilla.org/ko/docs/Web/HTTP/Methods&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;요청(Request)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;img id=&quot;img_1736260020155_0&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/36a6c2a7-de46-44cb-8268-0c29fd35cad0/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;HTTP Message&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt; ☝ &lt;b&gt;&lt;a href=&quot;https://www.aidenlim.dev:80/path/to/resource/?key=value#docs&quot;&gt;https://www.aidenlim.dev:80/path/to/resource/?key=value#docs&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;URL(Uniform Resource Locator)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt;   &lt;b&gt;웹에서의 자원의 식별&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt; ✔️ &lt;b&gt;자원을 식별하기 위해 사용하는 URL에 대해 알아볼까요?&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;li&gt;HTTP Status Code&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt; &amp;lt;img src=&quot;/icons/checkmark-square_red.svg&quot; alt=&quot;/icons/checkmark-square_red.svg&quot; width=&quot;40px&quot; /&amp;gt; MDN 공식문서 &lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/Methods&quot;&gt;https://developer.mozilla.org/ko/docs/Web/HTTP/Methods&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;요청(Request)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;img id=&quot;img_1736260020155_0&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/36a6c2a7-de46-44cb-8268-0c29fd35cad0/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;HTTP Message&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt; ☝ &lt;b&gt;&lt;a href=&quot;https://www.aidenlim.dev:80/path/to/resource/?key=value#docs&quot;&gt;https://www.aidenlim.dev:80/path/to/resource/?key=value#docs&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;URL(Uniform Resource Locator)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt;   &lt;b&gt;웹에서의 자원의 식별&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt; ✔️ &lt;b&gt;자원을 식별하기 위해 사용하는 URL에 대해 알아볼까요?&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&amp;lt;/aside&amp;gt;&lt;/li&gt;
&lt;li&gt;HTTP Status Code&lt;/li&gt;
&lt;li&gt;&amp;lt;aside&amp;gt; &amp;lt;img src=&quot;/icons/checkmark-square_red.svg&quot; alt=&quot;/icons/checkmark-square_red.svg&quot; width=&quot;40px&quot; /&amp;gt; MDN 공식문서 &lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/HTTP/Methods&quot;&gt;https://developer.mozilla.org/ko/docs/Web/HTTP/Methods&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;요청(Request)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;img id=&quot;img_1736260020155_0&quot; src=&quot;https://prod-files-secure.s3.us-west-2.amazonaws.com/83c75a39-3aba-4ba4-a792-7aefe4b07895/36a6c2a7-de46-44cb-8268-0c29fd35cad0/Untitled.png&quot; /&gt;&lt;/li&gt;
&lt;li&gt;HTTP Message&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>AI 본캠프/TIL</category>
      <author>impact7608</author>
      <guid isPermaLink="true">https://impact7608.tistory.com/239</guid>
      <comments>https://impact7608.tistory.com/239#entry239comment</comments>
      <pubDate>Tue, 7 Jan 2025 23:27:10 +0900</pubDate>
    </item>
  </channel>
</rss>