190529 HTTP/1.0 syntax
HTTP/1.0의 신택스
HTTP의 역사
- 1990년 HTTP/0.9
- HTML 문서 요청-가져오는 단순한 프로토콜.
- 이후로 폼 전송, 정보 갱신,채팅기능 구현 등에 사용되면서 기능 확장
- 1996년 HTTP/1.0
- 1997년 HTTP/1.1
- 2015년 HTTP/2
HTTP와 관련된 고유 명사들
- IETF
- The Internet Engineering Task Force
- 인터넷의 상호 접속성을 향상시키는 것을 목적으로 만들어진 임의 단체
- RFC
- Request For Comments
- IETF가 만든 규약 문서
- IANA
- Internet Assigned Numbers Authority
- 포트 번호와 파일타입(Content-Type)등 웹에 관한 데이터베이스를 관리하는 단체
- W3C
- World Wide Web Consortium
- 웹 관련 표준화를 하는 비영리단체
- HTML 사양 책정, server-sent events, 웹소켓 등 API를 동반하는 통신 프로토콜
- WHATWG
- Web Hypertext Application Technology Working Group
- 웹 관련 규격을 논의하는 단체
인터넷이 서로 연결되는 것도, 메일을 주고받을 수 있는 것도 모두 RFC로 정해진 규칙을 따라 인터넷 세계의 시스템이 구성되었기 때문이다.
테스트용 에코 서버 실행해보기
package main
import (
"fmt"
"log"
"net/http"
"net/http/httputil"
)
func handler(w http.ResponseWriter, r *http.Request) {
dump, err := httputil.DumpRequest(r, true)
if err != nil {
http.Error(w, fmt.Sprint(err), http.StatusInternalServerError)
return
}
fmt.Println(string(dump))
fmt.Fprintf(w, "<html><body>hello</body></html>\n")
}
func main(){
var httpServer http.Server
http.HandleFunc("/", handler)
log.Println("start http listening: 18888")
httpServer.Addr=":18888"
log.Println(httpServer.ListenAndServe())
}
실행시 handler 함수 호출, 대기중인 포트 번호인 18888이 출력된다.
HTTP 0.9로 할 수 있는 것
- 텍스트 정보가 적힌 페이지 경로를 서버에 지정, 해당 페이지를 가져오기만 하는 프로토콜
- 0.9버전은 현행 프로토콜과 하위 호환성이 없다
- 아래 예제는 HTTP/1.0을 사용한다.
# curl 실행 예
$ curl --http1.0 http://localhost:18888/greeting
<html><body>hello</body></html>
# 서버 측 로그
GET /greeting HTTP/1.0
Host: localhost:18888
Connection: close
Accept: */*
User-Agent: curl/7.52.1
- 폼과 검색 기능
- HTML 태그 내에서
<isindex>
태그를 이용하면 텍스트 입력란이 생겨 검색 가능했음.
- HTML 태그 내에서
출처
리얼월드 HTTP - 한빛미디어