# Ajax
# HTTP
- Hypertext transfer protocol
- 월드 와이드 웹의 주요 프로토콜
- 브라우저는 사실 HTTP 클라이언트라고 할 수 있다. (페이지를 제공하는 서버는 HTTP 서버)
- Ajax는 HTTP 프로토콜 이용해서 서버로 요청을 보냄. 그 형식을 구성해서 보내야 함.
# HTTP 요청
특정 서버에 연결이 이루어지면, HTTP 클라이언트는 다음 형식으로 요청 보냄
- 시작 줄
- 3개 부분. 메서드명(어떤 명령 요구할건지) / 서버 자원 경로 정보 / HTTP 프로토콜 버전
GET /testpage.html HTTP/1.0
- 헤더 정보(생략 가능)
- 지금 보내는 요청에 대한 정보 / 본문의 내용에 대한 정보. Key-Value쌍이 콜론으로 구분되어 한 줄씩 차지함.
User-Agent: Mozilla/4.0
Accept: text/plain, text/html
# 서버로부터 오는 응답 중에서 어떤 종류의 정보를 받겠다. 서버에게 지금 요청을 내린 프로그램이 받아들일 수 있는것이 일반 텍스트와 HTML응답이다. (비디오, 오디오 등은 안 받음)
- 빈칸
- 본문 메세지(생략 가능)
# HTTP 응답
- 시작 줄: 상태
- 앞에(HTTP Request에서 보내주었던) HTTP버전 / 3개의 숫자로 이루어진 상태 값 / 그 상태에 대한 짧은 설명 문자열
HTTP/1.0 200 OK
- 헤더 정보
- key-value 쌍. 서버에 대한 정보나 서버가 보내는 내용에 대한 정보.
# 참고: 일반적인 상태 코드
- 1**: 정보
- 2**: 성공
- 200 ok: 요청 성공적 수행
- 204 No Content: 요청한 문서에 내용이 없음
- 3**: 리다이렉트
- 301 Moved Permanently: 요청한 자원이 다른 주소로 이동되었음
- 4**: 클라이언트 에러
- 401 Not Authorized: 권한 없음
- 403 Forbidden: 서버가 요청을 거부하였음
- 408 Request Timeout: 클라이언트가 서버가 지정한 타임아웃 시간 내에 응답을 보내지 않음
- 5**
- 500 Server Error: 비정상적인 스크립트로 인해 서버 설정에 에러 등등