S3 CORS

Jihun Kim·2022년 3월 19일
0

aws solutions architect

목록 보기
30/57
post-thumbnail

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

  • 쓰기 후 읽기 요청이 들어올 경우 객체의 가장 최신 버전을 보여주게 된다.
  • 목록을 작성할 때마다 해당 아이템을 리스트에서 볼 수 있다.


오답노트

profile
쿄쿄

0개의 댓글