알려드립니다. 이 글에서 소개한 무료 도구와 유료 템플릿은 이 블로그를 운영하는 PC Wise AI가 만들어 제공하는 것입니다. 유료 템플릿이 판매되면 그 대금은 저희에게 돌아갑니다. 무료 도구는 결제나 가입 없이 쓰실 수 있습니다.
크롬 웹스토어에 확장 프로그램을 제출했는데 “원격으로 호스팅되는 코드(remotely hosted code)”를 사용한다는 이유로 반려되는 경우가 많습니다. 구글이 붙이는 코드명으로는 흔히 Blue Argon 계열로 안내됩니다. 기능은 멀쩡히 잘 돌아가는데 왜 막히는지 답답한 대표적인 사유입니다.
왜 이 사유로 막히나요
매니페스트 V3부터 구글은 확장 프로그램이 패키지 바깥에서 실행 코드를 가져와 실행하는 것을 금지합니다. 확장이 설치될 때 심사한 코드와 실제로 실행되는 코드가 달라질 수 있어 보안상 위험하다고 보기 때문입니다. 다음과 같은 패턴이 있으면 이 사유로 걸립니다.
- 외부 주소(CDN 등)에서 자바스크립트 파일을 불러오는 태그를 페이지에 삽입하는 경우
- 원격에서 받아온 문자열을 코드로 실행하는 경우
- 원격 URL에서 모듈을 동적으로 가져와(import) 실행하는 경우
- 서버에서 받아온 응답을 코드로 실행하는 경우
서버에서 데이터를 받아오는 것 자체는 문제가 아닙니다. 문제가 되는 것은 받아온 것이 확장의 동작을 결정하는 로직일 때입니다. JSON으로 받았더라도 그 안의 명령을 해석해 실행하는 구조라면 원격 코드로 봅니다. 형식이 아니라 로직인지 데이터인지가 기준입니다.
정확한 해결 방법
- 모든 실행 코드를 패키지 안에 번들하세요. 외부에서 스크립트를 불러오지 말고, 필요한 라이브러리는 확장 폴더 안에 파일로 포함해 로컬에서 불러옵니다.
- 문자열을 코드로 실행하는 함수를 제거하세요. 대부분 정적인 함수 호출로 바꿀 수 있습니다. 번들러(webpack 등)를 쓴다면 해당 기능이 코드에 들어가지 않도록 설정합니다.
- 콘텐츠 보안 정책(CSP)을 점검하세요. 확장 페이지의 스크립트 소스에 외부 주소가 들어 있으면 안 됩니다. 서버 통신이 필요하면 스크립트 소스가 아니라 연결(connect) 항목으로만 두고, 그 응답은 데이터로만 다룹니다.
- 데이터와 코드를 분리하세요. 서버에서 설정값이나 목록을 받아오는 것은 괜찮지만, 그것을 실행 가능한 코드 형태로 받아 실행하면 안 됩니다.
제출 전 스스로 확인하기
재제출 전에 아래 네 가지만 확인해도 이 사유는 대부분 피할 수 있습니다.
- 외부 주소에서 스크립트를 불러오는 부분이 있는가?
- 문자열을 코드로 실행하는 부분이 있는가?
- 확장 페이지의 보안 정책에 외부 스크립트 주소가 들어 있는가?
- 서버 응답을 데이터가 아니라 코드로 실행하고 있지는 않은가?
반려는 “끝”이 아니라 정확히 어디를 고치라는 신호입니다. 위 항목을 정리해 재제출하면 대부분 통과됩니다. 다른 코드명으로 막혔다면 크롬 확장 반려 코드 정리와 권한 과다 반려 해결법도 함께 참고하세요. 이미 여러 번 막혀 코드까지 받은 상태라면 반려 메일과 매니페스트를 바탕으로 정밀 분석을 받아볼 수도 있습니다.
제출 전에 한 번 더 점검하고 싶다면
반려는 대부분 같은 항목에서 반복됩니다. 권한 사유 설명, 개인정보 처리방침, 원격 코드 판정, 스토어 등록 정보 일치 여부입니다. 이 항목들을 순서대로 확인할 수 있게 정리한 Chrome Web Store 제출 키트가 있습니다. 심사 항목별 체크리스트와 권한 사유 문안 예시, 개인정보 처리방침 템플릿이 들어 있습니다. 자료는 영문으로 되어 있습니다 — 스토어에 그대로 제출할 수 있는 형태로 만들었기 때문입니다.
무료로 먼저 확인하고 싶으시면 manifest 점검 도구와 개인정보 처리방침 생성기를 쓰셔도 됩니다.
거절 메일에 적힌 코드가 무슨 뜻인지 바로 보고 싶으시면 한국어 코드 조회 도구를 쓰세요. 붙여넣으면 찾아줍니다. 무료입니다.

답글 남기기