AEM Headless SPA 배포

AEM Headless 단일 페이지 앱(SPA) 배포에는 React 또는 Vue와 같은 프레임워크를 사용하여 빌드된 JavaScript 기반 애플리케이션이 포함되며, Headless 방식으로 AEM의 콘텐츠를 소비하고 상호 작용합니다.

Headless 방식으로 AEM과 상호 작용하는 SPA 배포에는 SPA을 호스팅하고 웹 브라우저를 통해 액세스할 수 있도록 하는 작업이 포함됩니다.

SPA 호스팅

SPA은 기본 웹 리소스 HTML, CSS 및 JavaScript ​의 컬렉션으로 구성됩니다. 이러한 리소스는 build 프로세스(예: npm run build) 중에 생성되며 최종 사용자가 사용할 수 있도록 호스트에 배포됩니다.

조직의 요구 사항에 따라 다양한 호스팅 옵션이 있습니다.

  1. Azure 또는 AWS ​와 같은 클라우드 공급자.

  2. 회사 데이터 센터 ​에서 온-프레미스 호스팅

  3. AWS Amplify, Azure App Service, Netlify, Heroku, Vercel 등과 같은 프런트 엔드 호스팅 플랫폼

배포 구성

AEM Headless와 상호 작용하는 SPA을 호스팅할 때 주로 고려해야 할 사항은 SPA이 AEM의 도메인(또는 호스트)을 통해 액세스되는지 또는 다른 도메인에서 액세스되는지 여부입니다. 그 이유는 SPA이 웹 브라우저에서 실행되는 웹 애플리케이션이므로 웹 브라우저 보안 정책의 적용을 받기 때문입니다.

공유 도메인

SPA과 AEM은 동일한 도메인에서 최종 사용자가 둘 다 액세스할 때 도메인을 공유합니다. 예:

  • AEM은 https://wknd.site/을(를) 통해 액세스됩니다.
  • SPA은 https://wknd.site/spa을(를) 통해 액세스됩니다.

AEM과 SPA은 동일한 도메인에서 액세스되므로 웹 브라우저를 사용하면 SPA이 CORS 없이도 AEM Headless 엔드포인트로 XHR을 만들고 AEM의 login-token 쿠키와 같은 HTTP 쿠키를 공유할 수 있습니다.

SPA 및 AEM 트래픽이 공유 도메인에서 라우팅되는 방법은 여러 출처가 있는 CDN, 역방향 프록시가 있는 HTTP 서버, SPAAEM 에서 직접 호스팅 등입니다.

다음은 AEM과 동일한 도메인에서 호스팅되는 경우 SPA 프로덕션 배포에 필요한 배포 구성입니다.

SPA이에 연결
AEM Author
AEM 게시
AEM 미리 보기
Dispatcher 필터
CORS(원본 간 리소스 공유)
AEM 호스트

다른 도메인

SPA 및 AEM에는 다른 도메인의 최종 사용자가 액세스할 때 다른 도메인이 있습니다. 예:

  • AEM은 https://wknd.site/을(를) 통해 액세스됩니다.
  • SPA은 https://wknd-app.site/을(를) 통해 액세스됩니다.

AEM과 SPA은 서로 다른 도메인에서 액세스되므로 웹 브라우저는 CORS(원본 간 리소스 공유)와 같은 보안 정책을 적용하고 HTTP 쿠키(AEM의 login-token 쿠키 등) 공유를 방지합니다.

다음은 AEM이 아닌 다른 도메인에서 호스팅되는 경우 SPA 프로덕션 배포에 필요한 배포 구성입니다.

SPA이에 연결
AEM Author
AEM 게시
AEM 미리 보기
Dispatcher 필터
CORS(원본 간 리소스 공유)
AEM 호스트

다른 도메인에서의 SPA 배포 예

이 예에서 SPA은 Netlify 도메인(https://main--sparkly-marzipan-b20bf8.netlify.app/)에 배포되고 SPA은 AEM Publish 도메인(https://publish-p65804-e666805.adobeaemcloud.com)의 AEM GraphQL API를 사용합니다. 아래 스크린샷은 CORS 요구 사항을 강조합니다.

  1. SPA은 Netlify 도메인에서 제공되지만 다른 도메인의 AEM GraphQL API에 대해 XHR을 호출합니다. 이 사이트 간 요청을 사용하려면 Netlify 도메인의 콘텐츠 액세스 요청을 허용하도록 AEM에 CORS을(를) 설정해야 합니다.

    SPA 및 AEM 호스트에서 제공된 SPA 요청

  2. AEM GraphQL API에 대한 XHR 요청을 검사하는 동안 Access-Control-Allow-Origin이(가) 있으며 이는 AEM이 이 Netlify 도메인의 콘텐츠 액세스를 허용함을 웹 브라우저에 나타냅니다.

    AEM CORS이(가) 없거나 Netlify 도메인을 포함하지 않으면 웹 브라우저에서 XHR 요청을 실패하고 CORS 오류를 보고합니다.

    CORS 응답 헤더 AEM GraphQL API

단일 페이지 앱 예

Adobe은 React로 코딩된 단일 페이지 앱의 예를 제공합니다.

React 앱

React 앱

AEM Headless GraphQL API의 콘텐츠를 사용하는 React로 작성된 단일 페이지 앱의 예입니다.

예제 보기

Next.js 앱

Next.js 앱

AEM Headless GraphQL API의 콘텐츠를 사용하는 Next.js로 작성된 단일 페이지 앱의 예입니다.

예제 보기

recommendation-more-help
e25b6834-e87f-4ff3-ba56-4cd16cdfdec4