![Thumbnail](https://cdn.inflearn.com/public/courses/326277/cover/52d4f143-b470-4109-96cb-a0b146fb42ed/http.png)
44,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결모든 개발자를 위한 HTTP 웹 기본 지식
강의자료 블로그 업로드
안녕하십니까 영한님!공부한 내용을 블로그에 작성해가며 공부하는 편인데,제공해주신 강의자료를 부분부분 캡쳐해가며 블로그에 작성해도 괜찮을까요?
- 미해결모든 개발자를 위한 HTTP 웹 기본 지식
캐시 무효화 질문
이전 강의를 토대로 캐시를 막으려면 get 대신 post로 조회하면 불필요한 캐시조차 아에 생성이 안되지 않나요? 만약에 된다면 이 방법이 더 효율적일거 같은데요프록시 캐시는 자기(캐시)가 유효한지 어떻게 검증하나요? 예를들면, no cache가 안붙으면 클라이언트의 요청은 프록시캐시까지만 접근하는데, 이때 프록시 캐시가 독단적으로 원서버에 해당 캐시가 유효한지 요청을 보내나요? 이렇게 되면 결국 요청이 원서버까지 갖다오는 시간보다 더 될텐데.. 프록시 캐시가 자신을 검증을 하는건지 안하는건지 하면 언제하는지 궁금합니다.
- 미해결모든 개발자를 위한 HTTP 웹 기본 지식
set-cookie에 samesite=none 설정
강의 잘 듣고 있습니다 🙂 실무를 하다 관련해서 궁금한 점이 생겨 질문 드립니다. [질문 내용]Q1. 클라이언트의 도메인과 서버의 도메인이 다를때, domain=.aaa.com; SameSite=None 으로 설정하여 서버에서 set-cookie시 클라이언트에 쿠키 저장이 안되던데, samesite=none 이어도, domain=.aaa.com;에 위배되기에 저장되지 않는 것으로 이해하면 될까요? ex. 클라이언트 - bbb.com 서버 - aaa.com 배포시 클라이언트와 서버 도메인이 같을 때는 쿠키 저장이 되는데, 다를 때(브랜치 dev에 배포시 다른 경우가 있습니다.)는 저장이 되지 않아 로그인이 동작하지 않아서 확인해보았더니 set-cookie에 domain=.aaa.com; samesite=none 설정 되어 있더라구요. Q2. 그렇다면, samesite=none은 언제 사용하는걸까요??
- 미해결모든 개발자를 위한 HTTP 웹 기본 지식
HTTP 의 Connectionless특성
안녕하세요! 궁금한게 있어서 문의드립니다.저는 지금까지 HTTP의 특징을 비연결성으로 배웠습니다... "HTTP/1.1부터는 keep-alive가 기본으로 세팅되어 자동으로 지속 연결이 된다." 라는 말을 저는HTTP 자체는 비연결성인데 HTTP 1.1 , HTTP 2.0등 이후 버전들이 성능개선을 위해 지속연결을 자동으로 사용한다 라고 말씀해주셨는데 그렇다면 HTTP는 연결성 아닌가요? 면접에서 HTTP의 특징을 물었을때 비연결성이다 라고 말하면 틀린건가요? 또한 둘 중 어떤게 맞는건지 궁금합니다HTTP는 무상태,비연결성 특징을 가진다. 왜냐하면 각 요청과 응답에 대해서 독립적으로 처리되기 때문이다. 또한 HTTP 1.0, 1.1 그 이상 버전에서도 TCP 지속연결 모델을 사용하지만 HTTP는 TCP위에서 동작하기 때문에 비연결성의 특징을 그대로 갖고 있다.HTTP는 무상태, 비연결성 특징을 가진다. 하지만 HTTP 1.0버전에서 비연결성의 단점이 드러났다. 따라서 1.1 버전 이상부터는 지속 연결을 사용하여 이러한 단점을 극복했다.
- 미해결모든 개발자를 위한 HTTP 웹 기본 지식
쿠키와 https
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]좋은 강의에 항상 감사드립니다. 쿠키의 한계 중에서, 민감한 정보(예를 들어서 클라이언트의 비밀번호)를 쿠키에 포함하게 될 경우, 네트워크를 감청하는 다른 사용자에게 노출될 수 있다고 배웠습니다. 그런데 혹시 https 메시지를 이용하게 되면, https요청과 응답이 모두, 클라이언트와 서버 둘만이 알아볼 수 있도록 암호화 되서 송수신이 될 텐데, 쿠키에 비밀번호를 노출시켰다고 한들 네트워크를 통한 감청은 예방되지 않나요?
- 미해결모든 개발자를 위한 HTTP 웹 기본 지식
사용자, 관리자 Rest API를 한 서버에서 관리할 때, URI 설계
안녕하세요.이번에 신입 백엔드 개발자로 취업하게 되어 프로젝트를 진행 중에 해당 HTTP 강의를 듣고 궁금한 점이 생기어 올리게 되었습니다. 다름이 아니라 사용자 API와 관리자 API를 제공하는 서버가 분리되어 있지 않고 한 서버에서 모두 제공하는 형태에서 URI를 어떻게 설계해야 하는지 잘 모르겠습니다. 예를 들어, 로그인 API를 예시로 들어보자면 "/v1/api/login" 으로 만들면 깔끔한데 관리자 로그인도 들어가야해서 결국 "/v1/api/user/login", "/v1/api/admin/login" 으로 설계하게 되었는데 이게 잘 설계한 것인지 모르겠습니다... [예시]인증이 필요없는 API --> 기본 Path "/api/v1/..."--> ex. /api/v1/products (상품 목록 API) 사용자 인증이 필요한 API --> 기본 Path "/api/v1/user/..."--> ex. /api/v1/products (내 상품 목록 API) 관리자 인증이 필요한 API --> 기본 Path "/api/v1/admin/..."--> ex. /api/v1/admin/products (모든 유저 상품 목록 API) [궁금한 점]사용자 API와 관리자 API를 한 서버에서 제공하는 경우에 URI를 어떤 규칙을 갖고 설계하는 게 좋은지 궁금합니다. 하나의 컨트롤러에다 인증이 필요없는 Public API, 사용자 API, 관리자 API를 모두 관리하는 게 좋은지 아니면 권한별로 컨트롤러를 쪼개서 관리하는 게 좋은 것인지 궁금합니다. --> (하나의 컨트롤러로 관리) ex. ProductController--> (권한 별로 쪼개서 관리) ex. PublicProductController, UserProductController, AdminProductController
- 미해결모든 개발자를 위한 HTTP 웹 기본 지식
POST 응답 데이터 중 Location에 관한 질문입니다.
[질문 내용]강의 중 POST 요청으로 데이터를 저장 후 새 리소스 경로(강의에서는 /members/100)를 응답 데이터의 Location에 담아서 클라이언트에게 보낸다고 말씀해주셨는데, 그럼 응답 데이터를 받은 클라이언트에서는 Location에 담긴 /members/100이라는 경로로 리다이렉트(GET 요청)하는건가요?
- 미해결모든 개발자를 위한 HTTP 웹 기본 지식
패킷을 만들 때 사용되는 IP, PORT 정보가 궁금합니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]웹 브라우저 요청 흐름에 대해 제가 이해한 순서입니다.요청이 들어오면 DNS에서 조회해 IP, PORT를 얻는다.IP, PORT를 바탕으로 HTTP 요청 메시지를 생성한다. TCP/IP 패킷을 생성하여 서버로 전달한다.(전송계층에서 PORT 정보 추가, 인터넷계층에서 IP 정보 추가)이 과정에서 TCP/IP 패킷을 생성할 때의 IP 주소와 PORT 번호는 어디서 가져오는지 의문이 들었는데요, 1번 DNS에서 조회해 얻은 IP, PORT를 각각 전송계층, 인터넷계층에서 헤더 값으로 추가해주는 것인가요?
- 해결됨모든 개발자를 위한 HTTP 웹 기본 지식
컨트롤 uri 질문있습니다
컨트롤 URI라는 것 자체가 하나의 "uri 작명 방법론"(?) 인 거죠?? 가독성을 위해 최대한 명사 중심으로 하되, 정 안된다면 동사를 넣어도 된다는 것이 컨트롤 uri 설계라고 이해했는데 맞는걸까요 ???
- 미해결모든 개발자를 위한 HTTP 웹 기본 지식
stateful 과 stateless 에 대해서
stateful의 경우엔 고객 입장에서 점원이 이전 거래내용을 기억할거라고 판단하는게 맞나요?stateless의 경우 고객 입장에서 점원이 거래내용을 기억 못할테니 매번 대화마다 이전 데이터를 자세하게 전부 설명하는거죠?제가 이해한게 맞을까요?
- 미해결모든 개발자를 위한 HTTP 웹 기본 지식
API URI
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]제가 이해한 과정이 맞는 지 알려 주셨으면 좋겠습니다..웹 브라우저에서 웹 서버로 https://www.google.com:443/search?q=hello&hl=ko 이런 식으로 요청하면 DNS 서버에서 google.com -> 200.200.200.2(IP 주소)를 알아내고 443(PORT) 라는 정보를 알아 낸다. 웹 브라우저가 HTTP 메시지를 생성한다. ex) GET /search?q=hello&hl=ko HTTP/1.1 Host: www.google.com) 여기서 궁금한 것이 /search 자체는 리소스인데 이 리소스를 URI(URL)에 매핑 했기 때문에 Resource Path로서 사용할 수 있게 된 것인 가요?소켓 라이브러리를 통해서 전달 한다. * 이 때 알아낸 PORT와 IP주소로 TCP/IP 연결을 할 수 있게 하고 OS 계층에 데이터를 전달 한다.전달 받은 데이터를 포함한 TCP/IP 패킷을 만들어서 웹 서버로 전송 한다.웹 서버는 해당 패킷을 받아서 메시지 바디에 요청한 데이터를 포함하여 메시지 응답 패킷을 클라이언트(웹 브라우저)에게 전송한다 ex) HTTP/1.1 200 OK Content-Type: text/html;charset=UTF-8 Content-Length: 3423 ...웹 브라우저는 응답 메시지를 렌더링 해서 웹 페이지를 띄운다. 제가 이해한 바가 맞나요?
- 미해결모든 개발자를 위한 HTTP 웹 기본 지식
웹 브라우저 <-> 서버
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]복습하다가 궁금증이 생겨 질문 드려요!웹 브라우저와 웹 서버의 역할&정의제가 이해한 것이 맞는 지 틀렸다면 무엇이 틀렸는지 궁금합니다. ↓url을 입력 -> DNS 서버에서 해당 도메인 이름으로 된 IP 주소를 알아오고 scheme를 통해 생략된 포트 주소를 알아 온다 -> 웹 브라우저에서 HTTP 요청 메시지를 생성한다 -> 애플리케이션에서 소켓 라이브러리를 통해 메시지를 전달한다. 이때 알아낸 IP, PORT로 TCP/IP 연결 지시후 TCP/IP 계층으로 데이터 전송 -> TCP/IP 계층에서 HTTP 메시지를 포함한 TCP/IP 패킷 생성 -> 웹 서버로 전송
- 미해결모든 개발자를 위한 HTTP 웹 기본 지식
POST
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]요청 데이터 처리 • 단순히 데이터를 생성하거나, 변경하는 것을 넘어서 프로세스를 처리해야 하는 경우예) 주문에서 결제완료 -> 배달시작 -> 배달완료 처럼 단순히 값 변경을 넘어 프로세스의 상태가 변경되는 경우POST의 결과로 새로운 리소스가 생성되지 않을 수도 있음 예) POST /orders/{orderId}/start-delivery (컨트롤 URI)POST /orders/{orderId}/start-delivery (컨트롤 URI)에서 위의 POST 메서드는 다른 POST와는 달리 클라이언트에서 리소스를 식별하고 있는 것으로 보이는데 이러한 경우에는 리소스를 생성하지 않고 프로세스의 상태를 변경하는 건가요?POST /orders/{orderId}/start-delivery 이것이 정확히 무엇을 의미하는지 잘 모르겠습니다.+ PUT을 지원하지 않는 곳이 있어서 그럴 때는 POST를 사용하면 된다고 한 것이 데이터 변경을 의미한다는 것은 이해를 했습니다.그리고 리소스라고 하는 것은 문서, 동영상, 사진 등과 같이 식별할 수 있는 모든 것이라고 얘기를 했는데 리소스 변경, 수정, 삭제, 조회라고 하는 것이 저 예제를 통해서 이해를 하자면 members라는 리소스가 있는데 그 안에 들어있는 필드 값(속성?)을 변경하는 것으로 느껴집니다.
- 미해결모든 개발자를 위한 HTTP 웹 기본 지식
stateful, stateless
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]stateful, stateless에서 궁금한 점이 있습니다.stateless 같은 경우에는 서버에서 제공하는 리소스? 만 요청하면 되기 때문에 어떤 클라이언트에서 요청이 왔는지는 중요하지 않은 것으로 이해를 했는데 그러면 stateful은 계속 상태를 유지를 할텐데 어떤 클라이언트에서 요청이 왔는지는 쿠키를 통해서 구별하는 건가요?
- 미해결모든 개발자를 위한 HTTP 웹 기본 지식
성공 상태가 맞을가요?,.,
만약에 어떤 사람이 주문을 한적이 없어서..주문 조회 api 결과가 정상적으로 다 수행됬지만.. 아무것도 없는 경우에는 클라이언트에게 적절한 결과 코드는 무엇일까요..200일까요 아니면 다른 코드일까요보통 어떻게 되는지 궁금합니다..
- 미해결모든 개발자를 위한 HTTP 웹 기본 지식
비연결성에 대해 재질문드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]HTTP가 기본 비연결성 모델이지만 데이터 전송 후 일정 시간 연결을 유지하는 지속 연결을 추가한게 지금의 HTTP 모델이라고 이해했습니다.이전 강의에서 IP 프로토콜의 한계를 말씀하실 때 비연결성을 말씀하셨는데 같은 비연결성 용어라도 뜻이 서로 다른건가요? HTTP의 특징인 비연결성 : 필요할 때만 연결한다는 뜻IP의 한계인 비연결성 : 연결이 안되어있어도 전송함질문에 대해 재답변을 요청드렸는데 답변이 없으셔서 재질문드립니다..!+추가 : 많은 질문에 대한 답변들을 정리를 해보니 다음과 같은 결론이 나왔습니다.연결 지향성은 3 way handshake와 같이 먼저 요청 보낼 곳과 연결할 수 있는 지를 체크하는 것이고,연결성은 응답 이후에도 계속 연결이 되어있음을 뜻한다.즉, IP의 한계를 얘기할때는 비연결성이 아닌, 비 연결 지향성이 맞다는게 제 생각입니다.
- 미해결모든 개발자를 위한 HTTP 웹 기본 지식
비연결성에 대해 질문드립니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]HTTP가 기본 비연결성 모델이지만 데이터 전송 후 일정 시간 연결을 유지하는 지속 연결을 추가한게 지금의 HTTP 모델이라고 이해했습니다. 이전 강의에서 IP 프로토콜의 한계를 말씀하실 때 비연결성을 말씀하셨는데 같은 비연결성 용어라도 뜻이 서로 다른건가요? HTTP의 특징인 비연결성 : 필요할 때만 연결한다는 뜻IP의 한계인 비연결성 : 연결이 안되어있어도 전송함
- 미해결모든 개발자를 위한 HTTP 웹 기본 지식
PUT vs PATCH
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요.api설계 중 고민이 있어 질문드립니다. 이메일, 이름, 전화번호 를 필드로 갖는 회원 테이블이라고 가정하겠습니다.수정 가능한 정보는 이름, 전화번호 일 때, 어떤 방식으로 설계하는 것이 적절한지 여쭙고 싶습니다.1) PATCH members/{id} 로 수정하고자 하는 필드만 body에 받는 방식2) PUT members/{id}/name , PUT members/{id}/phone 로 각각 받는 방식추가로 2)방식처럼 수정할 요소를 주소에 명시한다면 해당 요소 관점에서는 덮어쓰는 것이기 때문에 PATCH보다 PUT이 적절한 게 맞는지 궁금합니다!
- 미해결모든 개발자를 위한 HTTP 웹 기본 지식
클라이언트
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]PUT과 POST의 차이점을 보고있었습니다.여기서 나오는 클라이언트가 직접 리소스의 URI를 지정한다. 를 보고 드는 생각이 클라이언트의 정확한 정의에 대해 알고 싶습니다.
- 미해결모든 개발자를 위한 HTTP 웹 기본 지식
URI 설계원칙과 rest API
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 강사님께서 말씀해주신 URI를 설계할때는 리소스만 식별하라는 말씀이 제가 공부했던 rest api의 특징과도 비슷해서 궁금증이 생겨 질문 드립니다. 그러면 혹시 설명해주신 URI 설계 원칙이 rest api의 특징이라고도 볼 수 있는 걸까요?