반응형
목록
분류 전체보기 (292)
[꼼꼼한 개발자] 꼼코더
🌐 Host (요청) 요청한 호스트 정보(도메인) 필수 헤더(아주 중요!!) 하나의 서버가 여러 도메인을 처리해야 할 때(하나의 IP 주소에 여러 도메인이 적용되어있을 때) 사용 🧑🏻🏫 예제 1) 가상 호스트를 통해 여러 도메인을 한 번에 처리할 수 있는 서버가 있음 서버의 IP주소가 200.200.200.2이다. 서버 안에 여러 개의 애플리케이션이 다른 도메인으로(aaa.com, bbb.com, ccc.com) 구동되어 있다. 2) 클라이언트가 Host를 지정하지 않고 서버에 /hello 요청을 보내는 경우 서버는 /hello가 aaa.com, bbb.com, ccc.com 중 어떤 도메인에 관한 요청인지 구분이 불가하다.(IP로 통신하기 때문) 3) 클라이언트가 Host를 지정하고 서버에 /hell..
ℹ️ From (요청) 유저 에이전트의 이메일 정보 일반적으로 잘 사용X 검색 엔진같은 곳에서 주로 사용 🔍 Referer (요청) 현재 요청된 페이지의 이전 웹 페이지 주소 매우 많이 사용된다. A->B로 이동하는 경우 B를 요청할 때, Referer:A를 포함해서 요청함 데이터 분석시 유입 경로 분석에 사용 referer는 referrer의 오타 (참고) 단순히 referer만 가지고 유입 경로 분석을 하기에는 변수가 너무 많아, 자바스크립트에 로그를 심거나 특별한 파라미터를 넘기는 등 서로 약속을 해서 진행함 🌐 User-Agent (요청) 유저 에이전트(클라이언트) 애플리케이션 정보 (웹 브라우저 정보..) 장애가 발생하는 브라우저 파악, 통계 정보 사용 💡 Server (응답) 요청을 처리하는 ..
📩 HTTP 메시지 전송 방식 👀 단순 전송 Content-Length 설정 데이터 전체를 한 번에 보낼 때 사용 다시 말해 Content의 길이를 지정을 해서 한 번에 요청을 하고 응답을 한다. 📩 압축 전송 Content-Encoding 설정 전송해야하는 데이터가 커서 압축해서 보낼 때 사용(압축 방식은 다양함) Content를 압축할 때 무엇을 압축되어 있는지 알아야 클라이언트에서 알고 압축을 풀 수 있다. 📨 분할 전송 Transfer-Encoding:chunked 설정, Content-Length 설정X 대용량 데이터를 클라이언트에 보낼 때, 요청이 모두 처리되기 전까지 총 크기를 알 수 없을 때 사용 chunked는 덩어리라는 뜻이다. 덩어리로 나눠서 전송을 한다. 그림을 설명 하자면 5byt..
🤝 콘텐츠 협상(Contents Negotiation) 클라이언트가 선호하는 표현 요청 협상 헤더는 요청시에만 사용 클라이언트 별로 선호하는 표현을 서버에서 처리해서 줄 수 있음 즉 클라이언트가 원하는 표현을 달라고 서버에 요청시 서버가 클라이언트가 원하는 우선순위에 맞춰서 표현 데이터를 만들어서 전송. 1) Accept: 클라이언트가 선호하는 미디어 타입 전달 2) Accept-Charset: 클라이언트가 선호하는 문자 인코딩 3) Accept-Encoding: 클라이언트가 선호하는 압축 인코딩 4) Accept-Language: 클라이언트가 선호하는 자연 언어 💬 Accept-Language 1) Accept-Language 적용 전 한국어 브라우저를 사용하고 다중 언어 지원하는 서버를 사용한다고 가..
표현 http로전송할 때, 어떠한 리소스를 html / json 등으로 표현해 전달한다. 과거 RFC2616 스펙에서는 엔티티헤더, 엔티티 본문 등으로 불리던 HTTP 헤더와 바디는 2014년부터 개정된 RFC2730~7235부터는 표현(Representation)이라는 용어로 불리게 되었다. HTTP 헤더는 표현 헤더, HTTP Message Body는 표현 데이터라 부른다. 표현 헤더 역시 표현 메타데이터와 페이로드 메세지로 구분해야 하지만, 생략한다. 🎃 표현 헤더 표현 헤더는 요청, 응답 메세지에서 모두 사용 1) Content-Type: 표현 데이터의 형식 2) Content-Encoding: 표현데이터의 압축 방식 3) Content-Language: 표현 데이터의 자연 언어 4) Conten..
👦🏻 HTTP 헤더 🎃 헤더 용도 HTTP 전송에 필요한 모든 부가정보를 담는 용도로 사용된다. 부가정보 : 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트, 서버 정보, 캐시 관리 정보 표준 헤더가 너무 많음, 필요시 임의의 헤더 추가 가능 >HELLO_WORLD: catsbi 🧙🏻♂️ 헤더 분류-RFC 2616(과거) 1) General 헤더: 요청/응답 메시지 전체에 적용되는 정보 > Connection: close 2) Request 헤더: 요청 정보 > User-Agent: Mozilla/5.0 3) Response 헤더: 응답 정보 > Server: Apache 4) Entity 헤더: 엔티티 바디 정보 > Content-Type: text/html, Content-..
⛔️ 4xx (Client Error) 클라이언트 오류 오류의 원인이 클라이언트에게 있다. ex) 클라이언트의 잘못된 문법으로 요청 (중요!) 클라이언트가 이미 잘못된 요청, 데이터를 보내고 있으므로 재시도해도 실패함 🤦🏻♂️ 400 Bad Request 클라이언트가 잘못된 요청을 해서 서버가 요청을 처리할 수 없음 요청 구문, 메시지 등 오류 클라이언트는 요청 내용을 재검토 후 보내야 함 요청 파라미터가 잘못되거나, API 스펙이 맞지 않을 때(문자를 보내야 되는 숫자를 보낸 경우) ✅ 401 Unauthorized 클라이언트가 해당 리소스에 대한 인증이 필요함 인증이 되지 않아 생긴 오류 해당 오류(401) 발생시, 응답에 WWW-Authenticate 헤더와 함께 인증 방법을 설명해야 한다. (참..
⚠️ 일시적인 리다이렉션 - 302, 307, 303 리소스의 URI가 일시적으로 변경 검색 엔진 등에서 URL을 변경하면 안 됨 302, 307, 303의 기능은 동일 실무적에서 많이 쓰이는 일시적인 리다이렉션이다. 1) 302 Found 리다이렉트시 요청 메서드가 GET으로 변하고, 본문이 제거될 수 있음(MAY) 프레임워크나 기술 레벨에서 보면 라이브러리들이 기본값으로 302를 많이 쓰인다. 2) 307 Temporary Redirect 리다이렉트시 요청 메서드와 본문 유지(요청 메서드를 변경하면 안 됨=MUST NOT) 3) 303 See Other 리다이렉트시 요청 메서드가 GET으로 변경(MUST) 🧙🏻♂️ PRG: Post/Redirect/Get POST로 주문 후에 새로 고침으로 인한 중..