CORS
- origin은 scheme(protocol), host(domain), port로 이루어져 있다.
- ex) https://www.example.com: 이 주소는 origin이며 scheme은 HTTPS이고 host는 www.example.com이고 port는 443이다.
- CORS는 다른 출처로부터 자원을 얻기를 원한다는 뜻이다.
- 웹 브라우저는 이미 CORS를 적용하고 있다.
- 특정 웹사이트(오리진)에 방문했을 때 만약 다른 오리진이 사용자가 다른 오리진으로 요청 하는 것을 허용할 경우에만 요청을 보낼 수 있다.
- 만약 사용자가 정확한 CORS 헤더를 가지고 있지 않다면 다른 오리진은 사용자의 요청을 차단한다.
- 이 CORS Headers는 Access Control Allow Origin이라 불린다.
CORS Headers를 이용한 요청 과정은 아래와 같이 이루어진다.
1. 웹 브라우저가 Origin에 방문했을 때 Origin으로부터 다른 Origin으로 요청을 보낼 것을 요청 받았을 경우
- 웹 브라우저는 Cross Origin에 Preflight 요청을 먼저 보낸다.
2. 그러면 Cross Origin은 Preflight Response를 보내준다.
- 해당 응답에서 Access-Control-Allow-Origin에 Cross Origin 호스트가 들어가 있다면 웹 브라우저는 Cross Origin에 다시 요청을 보낼 수 있게 된다.
S3 CORS
언제, 어디에서 CORS 헤더를 활성화 시켜야 하는 지를 알아야 한다.
CORS 헤더는 cross-origin-bucket에 정의되어야 한다(Origin bucket이 아니라).
- 만약 클라가 S3 버킷에 교차 출처 요청을 보낸다면 CORS 헤더를 활성화 시켜야 한다.
- 서로 다른 S3 버킷인 경우 교차 출처 요청이 되며 이 때 CORS 헤더를 활성화 해야 한다.
- 이 때 특정 origin만 허용하거나 모든 origin(*)을 허용하도록 설정할 수 있다.
- S3 bucket > Permission > Cross-Origin Resource Sharing(CORS) 를 수정하면 된다.
-
아래와 같이 수정하면 된다.
S3 Consistency
- 쓰기 후 읽기 요청이 들어올 경우 객체의 가장 최신 버전을 보여주게 된다.
- 목록을 작성할 때마다 해당 아이템을 리스트에서 볼 수 있다.
오답노트