본문 바로가기

HTTP

(37)
3월 10일 HTTP 전송방식 HTTP 전송방식 transfer - encoding range , content-range 전속방식 설명 단순전송, 압축전송, 분할 전송, 범위전송 단순전송(content - length) 를 알수있을때 사용 (request) get /event (response) HTTP/1.1 200 ok content-type :text/html; charset=UTF8 content-length:3423 한번에 요청하고 한번에 다 받는다. 압축전송 (request) get /event (response) HTTP/1.1 200 ok content-type : text/html; charset=UTF8 content-encoding : gzip content-length : 521 message 서버에서 메시지를..
3월 10일 HTTP 협상 협상 (콘텐츠 네고시에이터) 클라이언트가 선호하는 표현 요청 -accept : 클라이언트가 선호하는 미디어 타입 전달 -accept-charset : 클라이언트가 선호하는 문자 인코딩 -accept-encoding : 클라이언트가 선호하는 압축 인코딩 -accept-language : 클라이언트가 선호하는 자연언어 협상하려는 요청(request)시에만 사용 클라이언트가 원하는 형태로 서버에게 요청하는것이다. accept-language 적용전 (request) get /event (response) content-language:en hello language 정보가 없으면 서버는 기본으로 지원하는 언어로 응답하게 된다. (request) get /event accept-language:ko 요청 시 협..
3월 10일 HTTP 표현 표현 Represantation (서버에서 클라이언트로 보내는 값을 말한다) http/1.1 200 ok content-type : text/html; charset=UTF8 content-length : 3423 content type : 표현데이터의 형식 content-Encoding : 표현데이터의 압축 방식 content-Language : 표현 데이터의 자연언어 ( 한국어, 영어등) content-Length : 표현데이터의 길이 표현헤더는 전송 , 응답 , 둘다 사용 (리소스는 DB일수도 바이트 코드일 수도 있다) Content-Type 표현데이터의 형식 설명 (받을 데이터 형식) -미디어 타입 , 문자 인코딩 ex) text/htmll charset=UTF8 applicaiton/json i..
3월 10일 HTTP 바디 HTTP 바디 message body 과거 http/1.1 200 ok content-type : text/html; charset=UTF8 content-length : 3423 (엔티티 헤더) (엔티티 본문 / 메시지 본문을 담고있음) 메시지 본문(message body)는 엔티티 본문(entity body)를 전달하는데 사용 엔티티본문은 요청이나 응답에서 전달할 실제 데이터 엔티티헤더는 엔티티 본문의 데이터를 해석할 수 있는 정보제공 -데이터유형(html , json) 데이터 길이 , 압축정보 등 최근 (REC 723x) 변화 (엔티티 대신 표현이라는 말을 쓴다) 엔티티(entity) > 표현(representation) representation - representation MetaData + ..
3월 10일 HTTP 헤더 HTTP 일반헤더 HTTP 헤더는 header -field =field-name ":" OWS field-value OWS (OWS : 띄어쓰기 허용) field-name는 대소문자가 구분 없음 (request) GET /search?q=hello&h1=ko HTTP/1.1 host : www.google.com (여기 헤어가 들어간다.) (response) HTTP/1.1 200 ok content-type : text/html; charset=UTF8 content-length:3423 (여기 헤더가 들어간다.) http헤더 용도 -http 전송에 필요한 모든 부가정보 ex) 메시지 바디의 내용 , 메시지 바디의 크기 , 압축 , 인증 , 요청 클라이언트 , 서버정보 , 캐시관리정보 등 -표준 헤더가..
3월 10일 HTTP 상태코드 5xx 5xx 서버 에러 정말 서버에 문제가 있는경우 웬만하면 서버터진경우 이외엔 발생하면 안된다. 구매시 고객에 정보문제일 경우 500에러가 아니다. -서버 문제로 오류발생 -서버에 문제가 있기 때문에 재시도하면 성골할 수도 있음 (서버가 복구되거나 등등) 500 Internal server error -서버 내부에 문제로 오류발생 -애매하면 500 에러 503 service unavailable 서비스 이용 불가 -서버가 일시적이 과부화 또는 예정된 작업으로 잠시 요청을 처리할 수 없음 -Retry-After 헤더 필드로 얼마뒤에 서버가 복구되는지 보낼수도 있음
3월 10일 HTTP 상태코드 4xx 4xx 클라이언트 오류 -클라이언트의 요청에 잘못된 문답등으로 서버가 요청을 수행할수 없는 상태 -오류의 원인이 클라이언트에 있음 -클라이언트가 이미 잘못된 요청 , 데이터를 보내고 있기 때문에 똑같은 재시도는 실패한다. (복구 불가능 , 요청 수정시 필요) 400 bad request 클라이언트가 잘못된 요청을 해서 서버거 요청을 처리할수 없음 -요청 구문 , 메시지 등등의 오류 -클라이언트는 요청내용을 다시 검토하고 보내야함 (요청 파라미터가 잘못되거나 , API스펙이 맞지 않을때) (서버개발자는 4xx, 5xx 오류를 명확히 구분한다) 401 unauthorized 클라이언트가 해당 리소스에 대한인증이 필요함 -인증(authentication)되지 않음 -401오류 발생시 응답에 www-authen..
3월 9일 HTTP 상태코드 3xx PRG PRG : post / redirect / get 일시적인 리다이렉션 예시 -post로 주문후에 웹브라우저를 새로고침 하려면? 새로고침은 다시요청 이는 중복주문이 될 수 있따. (주문하기 > post > 새로고침 > (한번더) post) PRG 사용전 1.요청 post /order HTTP/1.1 host : localhost : 8080 itemId = mouse & count = 1 2.주문데이터 (mouse 1개) 저장 3.응답 http /1.1 200 ok 주문완료 4.여기서 1화면 새로고침 (마지막 요청 새로고침) 5.새로고침에 의한 재요청 post /order HTTP/1.1 host : localhost : 8080 itemId = mouse & count1 6.주문데이터 (mouse 1개)..