웹 기술 기초

https://app.example.com 페이지의 JavaScript가 fetch를 사용하여 https://api.example.net/orders로 Content-Type: application/json 본문을 붙인 POST 요청을 보내려 한다. 이때 CORS의 동작으로 올바른 것은?

  1. ACORS는 브라우저 이외에서도 작동하므로, 서버의 허가가 없으면 명령줄 도구에서 보낸 POST도 네트워크 도중에서 차단된다
  2. B브라우저는 먼저 OPTIONS 메서드로 사전 확인(프리플라이트)을 보내고, 서버가 헤더로 허가를 돌려준 경우에만 본래의 POST를 보낸다
  3. C다른 출처로 가는 요청은 항상 확인 없이 보내지며, 서버가 응답에 아무것도 붙이지 않아도 페이지의 JavaScript는 응답을 읽을 수 있다
정답과 해설 보기

정답: B. 브라우저는 먼저 OPTIONS 메서드로 사전 확인(프리플라이트)을 보내고, 서버가 헤더로 허가를 돌려준 경우에만 본래의 POST를 보낸다

CORS는 동일 출처 정책으로 제한되어 있는, 다른 출처로의 요청과 그 응답의 읽기를 서버가 허가한 범위에서 인정하는 구조입니다. Content-Type이 application/json인 POST는 단순한 폼 전송으로는 만들 수 없는 종류의 요청이므로, 브라우저는 먼저 OPTIONS로 사용할 메서드와 헤더를 전하여 허가를 확인합니다. 서버의 응답에 Access-Control-Allow-Origin 등의 허가가 없으면 브라우저는 본래의 요청을 보내지 않습니다. CORS는 브라우저가 지키는 규칙이므로, 서버는 따로 인증이나 권한 확인으로 자신을 지켜야 합니다.

이 분야 연습하기 분야로 돌아가기

웹 기술 기초의 다른 문제

  1. Service Worker에 대한 설명으로 올바른 것은?
  2. 스마트폰에도 대응하는 반응형 디자인 페이지에서 <head>에 <meta name="viewport" content="width=device-width, initial-scale=1">을 쓰는 주된 목적은?
  3. 이용자마다 내용이 다른 마이페이지의 응답에 Cache-Control: private, max-age=60을 붙였다. 이 지정의 효과로 올바른 것은?
  4. 웹 서버가 응답을 gzip이나 Brotli로 압축하여 보낼 때, 압축에 의한 전송량 절감이 일반적으로 가장 작은 것은?
  5. 1.5 MB의 텍스트 데이터를 gzip으로 3분의 1 크기로 압축하여 보낸다. 대역폭이 10 Mbps, RTT가 100 ms이고, 데이터를 보내기 시작하기 전에 TCP 연결, TLS 핸드셰이크, HTTP 요청에 합쳐서 3왕복이 걸린다고 한다. 1 MB = 10^6바이트로 하고, 압축과 압축 해제 시간, 헤더, TCP의 혼잡 제어에 의한 대기는 무시한다. 데이터를 다 받을 때까지의 시간에 가장 가까운 것은?