대왕판다
ESTP 하고재비로 살아가기
대왕판다
전체 방문자
오늘
어제
  • 분류 전체보기
    • 일상
      • 먹고재비
      • 생각대로
    • 개발
      • html css
      • 자바
      • 자바스크립트
      • 파이썬
      • 알고리즘
      • 북TIL
      • 네트워크
      • 객체지향개발

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • 자바
  • 코딩
  • css
  • 상길북
  • 브루트포스
  • 양산맛집
  • 챌린지
  • 자바스크립트
  • 알고리즘
  • 타입스크립트
  • 마이바티스
  • 리액트
  • 노마드코더
  • 백준
  • html
  • 맛집
  • 노개북
  • 파이썬
  • 양산
  • 클론코딩

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
대왕판다

ESTP 하고재비로 살아가기

개발/자바스크립트

AWS 배포 중 이미지, 비디오 리소스를 받아오지 못하는 경우

2022. 4. 14. 18:43

개발환경에서 컴퓨터를 이용한 서버에서는 crossorigin 미들웨어를 사용했다.

app.use((req, res, next) => {
  res.header("Cross-Origin-Embedder-Policy", "require-corp");
  res.header("Cross-Origin-Opener-Policy", "same-origin");
  next();
});

그러나 AWS로 배포해보니 이미지 소스나 영상 소스를 가져오지 못하고 

ERR_BLOCKED_BY_RESPONSE.NotSameOriginAfterDefaultedToSameOriginByCoep

혹은

AccessControlListNotSupported: The bucket does not allow ACLs

등 다양하게 ACL, crossorigin과 관련된 에러를 뱉어낸다.

에러에서도 알 수 있듯이 Crossorigin이 문제였던듯하다.

교차 출처 리소스 공유(Cross-origin resource sharing, CORS), 교차 출처 자원 공유는 웹 페이지 상의 제한된 리소스를 최초 자원이 서비스된 도메인 밖의 다른 도메인으로부터 요청할 수 있게 허용하는 구조이다.

 

원인을 알았으니 해결해보려면 AWS버킷에 ACL권한을 변경해주면 된다.

권한 -> 객체 소유권 편집 -> ACL 비활성화됨(권장)을 ACL 활성화됨로 변경 ->
ACL이 복원된다는 것을 확인합니다. 체크 -> 버킷 소유자 선호 체크 -> 변경사항 저장
위의 방법까지 해보시고, 그래도 안 되시는 분들은 ACL(액세스 제어 목록)에서 편집->모든 사람(퍼블릭 액세스)에 나열, 읽기 체크해주신 후 변경사항 저장

 

 

No 'Access-Control-Allow-Origin' header is present on the requested resource. net::ERR_FAILED 200


위와 같은 오류가 콘솔창에 뜨면 권한 -> CORS(Cross-origin 리소스 공유) 편집 -> 아래 코드를 추가해주시고 변경사항 저장하시면 된다.
https://stackoverflow.com/questions/17533888/s3-access-control-allow-origin-header

[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"GET",
"HEAD"
],
"AllowedOrigins": [
"*"
],
"ExposeHeaders": [],
"MaxAgeSeconds": 3000
}
]


+ 추가적으로 이미지 태그와 비디오 태그에 crossorigin속성을 추가한다.
img(src=`이미지 주소` crossorigin)
video(src=`비디오 주소` crossorigin)

CORS 구성
https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/ManageCorsUsing.html

AllowedOrigins을 설정하는 이유
허용하지 않은 origin에서 리소스에 접근 및 사용을 막기 위해서이다.
다시 말해, 허용하지 않은 클라이언트에게 리소스를 주지 않기 위함이고, 허용할 대상에 대한 설정이 AllowedOrigins이다.

 

출처) 노마드코더 sugar님, yoon1139님.

'개발 > 자바스크립트' 카테고리의 다른 글

자바스크립트의 비동기 처리  (0) 2022.07.12
null undefined의 차이  (0) 2022.05.16
[NextJS] Fast refresh가 작동하지 않을 때 (React 18)  (0) 2022.03.26
[NextJS] getSererSideProps  (0) 2022.03.24
자바스크립트 논리연산자 단축평가  (0) 2022.03.23
    '개발/자바스크립트' 카테고리의 다른 글
    • 자바스크립트의 비동기 처리
    • null undefined의 차이
    • [NextJS] Fast refresh가 작동하지 않을 때 (React 18)
    • [NextJS] getSererSideProps
    대왕판다
    대왕판다
    let's learn and roll!

    티스토리툴바