Cloudfront에서 “요청된 리소스에 대한 '액세스 제어-허용-오리진' 헤더가 없습니다” 오류를 해결하려면 어떻게 해야 하나요?

4분 분량
0

Amazon CloudFront에서 요청한 리소스에 “'액세스 제어-허용 오리진' 없음”이라는 CORS 오류가 표시됩니다.

해결 방법

오리진의 CORS(크로스 오리진 리소스 공유) 정책에 따라 오리진에서 Access-Control-Allow-Origin 헤더를 반환할 수 있는지 확인합니다.

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하는 경우, 최신 AWS CLI 버전을 사용하고 있는지 확인하세요.

다음 명령을 실행하여 오리진 서버가 Access-Control-Allow-Origin 헤더를 반환하는지 확인합니다. example.com을 필수 오리진 헤더로 바꾸세요. **https://www.example.net/video/call/System.generateId.dwr **을 헤더 오류를 반환하는 리소스의 URL로 대체합니다.

curl -H "Origin: example.com" -v "https://www.example.net/video/call/System.generateId.dwr"

CORS 정책에 따라 오리진 서버가 Access-Control-Allow-Origin 헤더를 반환하도록 허용하면 다음과 비슷한 응답이 표시됩니다.

HTTP/1.1 200 OK
Server: nginx/1.10.2
Date: Mon, 01 May 2018 03:06:41 GMT
Content-Type: text/html
Content-Length: 3770
Last-Modified: Thu, 16 Mar 2017 01:50:52 GMT
Connection: keep-alive
ETag: "58c9ef7c-eba"
Access-Control-Allow-Origin:
    example.com
Accept-Ranges: bytes

응답에서 CORS 헤더가 반환되지 않으면 오리진 서버가 CORS에 맞게 올바르게 설정되지 않은 것입니다. 사용자 지정 오리진 또는 Amazon Simple Storage Service(S3) 오리진에 CORS 정책을 설정합니다.

적절한 헤더를 오리진 서버에 전달하도록 CloudFront 배포를 구성합니다.

오리진 서버에 CORS 정책을 설정한 후, 오리진 헤더를 오리진 서버로 전달하도록 CloudFront 배포를 구성합니다. 오리진 서버가 Amazon S3 버킷인 경우, 다음 헤더를 Amazon S3에 전달하도록 배포를 구성하세요.

  • 액세스 제어 요청 헤더
  • 액세스 제어 요청 방법
  • 오리진

오리진 서버에 헤더를 전달하기 위해 CloudFront에는 오리진 유형에 따라 사전 정의된 두 가지 정책이 있습니다. CORS-S3OriginCORS-CustomOrigin.

배포에 사전 정의된 정책을 추가하려면:

  1. CloudFront 콘솔에서 배포판을 엽니다.
  2. 동작 탭을 선택합니다.
  3. 동작 생성을 선택합니다. 또는 기존 동작을 선택한 다음 Edit를 선택합니다.
  4. 캐시 키 및 원본 요청에서 캐시 정책 및 원본 요청 정책을 선택합니다. 그런 다음, 드롭다운 목록에서 오리진 요청 정책의 경우 ** CORS-S3Origin** 또는 CORS-CustomOrigin을 선택합니다. 자세한 내용은 관리형 오리진 요청 정책 사용을 참조하세요.
    참고: 대신 자체 캐시 정책을 생성하려면, 캐시 정책 생성을 참조하세요.
  5. 동작 생성을 선택합니다. 또는 기존 동작을 편집하는 경우 변경사항 저장을 선택합니다.

캐시 정책을 사용하여 헤더를 전달하려면:

  1. 캐시 정책을 생성합니다.
  2. 캐시 키 설정헤더에서 다음 헤더 포함을 선택합니다. 헤더 추가 드롭다운 목록에서 오리진에 필요한 헤더 중 하나를 선택합니다.
  3. 정책을 연결하는 동작의 필요에 따라 캐시 정책 설정을 입력합니다.
  4. 캐시 정책을 CloudFront 배포의 동작에 연결합니다.

레거시 캐시 설정을 사용하여 헤더를 전달하려면:

  1. CloudFront 콘솔에서 배포판을 엽니다.
  2. 동작 탭을 선택합니다.
  3. 동작 생성을 선택합니다. 또는 기존 동작을 선택한 다음 Edit를 선택합니다.
  4. 캐시 키 및 원본 요청에서 레거시 캐시 설정을 선택합니다.
  5. 헤더 드롭다운 목록에서, 오리진에 필요한 헤더를 선택합니다. Add custom(사용자 지정 추가)를 선택하여 드롭다운 목록에 나타나지 않는 오리진에 필요한 헤더를 추가합니다.
  6. 동작 생성을 선택합니다. 또는 기존 동작을 편집하는 경우 변경사항 저장을 선택합니다.

**참고:**또한 클라이언트 요청의 일부로 헤더를 CloudFront에 전달해야 합니다. 그러면 CloudFront는 이 헤더를 오리진에 전달합니다.

HTTP 요청에 OPTIONS 메서드를 허용하도록 CloudFront 배포의 캐시 동작을 구성합니다.

CORS 정책을 업데이트하고 적절한 헤더를 전달한 후에도 여전히 오류가 발생하면, 배포의 캐시 동작에서 OPTIONS HTTP 메서드를 허용하세요. 기본적으로 CloudFront는 GET 및 HEAD 메서드만 허용합니다. 하지만 일부 웹 브라우저에서는 OPTIONS 메서드에 대한 요청을 실행할 수 있습니다. CloudFront 배포에서 옵션 메서드를 활성화하려면:

  1. CloudFront 콘솔에서 배포판을 엽니다.
  2. 동작 탭을 선택합니다.
  3. 동작 생성을 선택합니다. 또는 기존 동작을 선택한 다음 Edit를 선택합니다.
  4. 허용된 HTTP 메서드에서 GET, HEAD, OPTIONS를 선택합니다.
  5. 동작 생성을 선택합니다. 또는 기존 동작을 편집하는 경우 변경사항 저장을 선택합니다.

필요한 액세스-제어-허용-오리진 헤더를 반환하도록 CloudFront 응답 정책을 구성합니다.

오리진 서버에 액세스할 수 없거나 적절한 CORS 헤더를 반환하도록 설정할 수 없는 경우, 필요한 CORS 헤더를 반환하도록 CloudFront를 구성하세요. 구성하려면, 응답 헤더 정책을 생성하세요.

  1. CloudFront 콘솔에서 배포판을 엽니다.
  2. 동작 탭을 선택합니다.
  3. 동작 생성을 선택합니다. 또는 기존 동작을 선택한 다음 Edit를 선택합니다.
  4. 응답 헤더 정책의 경우:
    드롭다운 목록에서 기존 대응 정책을 선택합니다.
    -또는-
    정책 생성을 선택하여 새 응답 헤더 정책을 생성합니다. 새 정책의 크로스 오리진 리소스 공유에서 CORS를 켜세요.
  5. 필요에 따라 다른 설정을 입력하고 Create policy(정책 생성)를 선택합니다.
  6. 동작 생성 페이지의 드롭다운 목록에서 생성한 정책을 선택합니다.
  7. 동작 생성을 선택합니다. 또는 기존 동작을 편집하는 경우 변경사항 저장을 선택합니다.

참고: CloudFront는 일반적으로 5분 이내에 배포에 변경 사항을 배포합니다. 배포를 편집한 후 캐시를 무효화하여 이전에 캐시된 응답을 지우세요.

관련 정보

CORS 설정을 준수하도록 CloudFront 구성

크로스 오리진 리소스 공유(CORS) 구성

관리형 응답 헤더 정책 사용

응답에 CORS(교차 출처 리소스 공유) 헤더 추가

AWS 공식
AWS 공식업데이트됨 2년 전