전체 글136 간단한 웹서버 만들기4 이번 글에서는 my_web_server.rb 소스 코드를 좀 다듬어 보자. 먼저, HTTP 요청을 실제 처리하는 곳에서 요청 메시지의 내용을 쉽게 참조할 수 있도록 요청 메시지를 파싱해서 구조화하자. 아래 코드를 보면 요청 메시지 파싱 작업을 담당하는 parse_request_message 메서드를 만들었고, loop 블록 안에서 parse_request_message 메서드를 호출하도록 수정하였다. 특히, URL의 쿼리 스트링과 (POST 방식의 경우) 본문에 포함되는 파라미터도 파싱하여 참조하기 쉽도록 하였다. 파라미터를 파싱하는 역할은 parse_parameters 메서드가 맡는다.def parse_request_message(socket) request = { headers: {} } # .. 2025. 7. 15. 간단한 웹서버 만들기3 이번 글에서는 HTML 폼을 통해 입력받은 데이터를 POST 방식으로 서버에 전송해 보자. 먼저, 아래처럼 hello.html 파일을 수정하자. 안녕하세요 방문해 주셔서 감사합니다 아이디: 비밀번호: 로그인 그리고 my_web_server.rb를 실행한 후, 웹부라우저 주소창에 http://localhost:12345/hello.html을 입력하자. 그러면 아이디와 비밀번호를 입력할 수 있는 화면이 나오는데, 값을 입력하고 로그인 버튼을 클릭해 보자. my_web_server에서 아직 POST 요청에 대한 처리를 해놓지 않았기 때문에 제대로 동작하지 않을 것이다. 이제 POST 요청을 처리할 수 있도록 my_web_server.rb 소스 코드를 수정해 보자. POST.. 2025. 7. 14. 간단한 웹서버 만들기2 이전 글에서 만들었던 my_web_server.rb를 실행한 후, 웹브라우저에서 http://localhost:12345/hello.html에 다시 접속해 보자. 그리고 Ctrl + F5 키를 눌러 강제 새로고침을 한 후, 개발자 도구의 Network 탭을 보면, 아래 그림처럼 왼쪽 패널에 hello.html과 favicon.ico 두 개의 항목이 보인다. 우리가 웹부라우저를 통해 직접 요청한 것은 hello.html이고, favicon.ico는 웹브라우저가 자동으로 요청한 것이다. 패비콘(favicon)은 웹부라우저 탭이나 즐겨찾기 목록에서 해당 사이트를 나타내는 작은 아이콘인데, 현재 웹서버에 패비콘이 없기 때문에 '404 Not Found' 응답을 받게 된다. 그러면 웹브라우저가 my_web_ser.. 2025. 7. 9. 간단한 웹서버 만들기1 이번 글에서는 간단한 웹서버 프로그램을 만들어보자. 웹브라우저 등의 클라언트와 웹서버는 서로 HTTP(S) 프로토콜을 사용해서 데이터를 주고받는다. HTTPS는 보안을 위해 데이터를 암호화해 전송하는 것을 제외하고, 메시지 구조와 요청 메서드 및 상태 코드 등은 모두 HTTP와 동일하다. 요청 메시지의 구조는 요청 라인과 여러 개의 헤더 그리고 본문(optional)으로 구성된다. 요청 라인과 각각의 헤더들은 모두 \r\n로 끝나야 하고, 마지막 헤더 다음에는 헤더의 끝을 나타내는 빈 라인(\r\n)이 하나 필요하다. 응답 메시지의 구조도 요청 메시지의 구조와 동일한데, 다만 첫 번째 라인이 요청 라인이 아니라 처리 결과를 나타내는 상태 라인이라는 것만 다르다. HTTP 요청 메서드에는 GET, POST.. 2025. 7. 8. 이전 1 2 3 4 ··· 34 다음