JS 축소 및 번들링을 활성화하면 체크아웃이 실패합니다
이 문서에서는 JavaScript(JS) 에셋의 축소, 번들링 및 (경우에 따라) 병합을 활성화할 때 체크아웃이 제대로 작동하지 않는 Adobe Commerce 문제에 대한 패치를 제공합니다.
설명 description
환경
Adobe Commerce, 모든 배포 메서드.
문제/증상
콘텐츠 보안 정책(CSP) 기능의 최근 변경 사항으로 인해 축소, 번들 및 경우에 따라 JS 에셋 병합을 활성화할 때 체크아웃 기능이 실패하게 되었습니다. 이 문제는 상점 첫 화면의 주문 배치를 완전히 차단할 수 있습니다.
영향을 받는 제품 및 버전
Magento Open Source 및 Adobe Commerce(모든 배포 방법):
- 2.4.4-p16
- 2.4.5-p15
- 2.4.6-p13
- 2.4.7-p8
- 2.4.8-p3
재현 단계:
-
CSP 모듈이 활성화되어 있는지 확인합니다.
-
프로덕션 모드로 전환하고 JS 에셋의 축소 및 번들링을 활성화합니다.
-
정적 콘텐츠 배포 및 캐시 플러시.
-
상점 앞으로 이동하여 주문을 시도합니다.
-
체크아웃 흐름의 각 단계 동안 브라우저 콘솔에서 JS 오류를 확인합니다.
- 오류가 있거나 체크아웃이 명시적으로 실패하면 저장소가 영향을 받습니다.
- 오류가 없고 주문 배치가 가능한 경우
mixins.min.js체크아웃 페이지에 이(가) 있는지 확인하십시오.mixins.min.js이(가) 없지만 체크아웃이 작동하는 경우 - 문제가 존재하지만 저장소에 가시적으로 영향을 주지 않습니다.
원인
CSP 기능을 변경하면 잘못된 파일 경로로 인해 번들링이 활성화될 때 축소된 JS 파일에 대한 SRI(Subresource Integrity) 해시가 잘못 생성됩니다.
이렇게 되면 mixins.min.js체크아웃static.min.js 페이지에서 및 이(가) 제대로 렌더링되지 않아 주문 배치 중에 다양한 오류가 발생합니다.
해결 방법 resolution
영향을 받는 버전에서 실행 중인 저장소는 해당 패치를 적용하여 문제를 해결해야 합니다.
- 버전 2.4.4-p16의 경우
- 버전 2.4.5-p15의 경우
- 버전 2.4.6-p13 및 2.4.7-p8의 경우
- 버전 2.4.8-p3의 경우
이러한 패치는 위에 언급된 CSP 관련 변경 사항을 되돌리고 CSP 기능을 해당 변경 전의 상태로 복원합니다.
참고: 이 패치를 적용하면 SRI 기능과 관련하여 이전에 알려진 몇 가지 문제가 다시 발생합니다.
- 버전 2.4.7-p8 이하에서 SRI 해시는
sri-hashes.json에 저장되지 않고 다시 캐시됩니다. - 버전 2.4.8-p3 이하에서 번들/병합된 JS 자산은 무결성 해시 유효성 검사를 받지 않습니다.
- 버전 2.4.8-p3의 클라우드 인스턴스에서 일부 JS 에셋에 대해서만 SRI 해시가 포함된
sri-hashes.json개의 파일을 잘못 생성했을 수 있습니다.