You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Access to XMLHttpRequest at 'https://qeploy.com/cdn-cgi/rum?' from origin 'null'
has been blocked by CORS policy: Response to preflight request doesn't pass
access control check: No 'Access-Control-Allow-Origin' header is present
POST https://qeploy.com/cdn-cgi/rum? net::ERR_FAILED
원인 (실측)
Cloudflare가 이 zone의 HTML 응답에 beacon.min.js(cloudflareinsights)를 자동 주입한다 — curl https://qeploy.com/ 응답에서 확인.
그 beacon이 수집 데이터를 같은 도메인의 /cdn-cgi/rum으로 POST한다. 이 경로는 Cloudflare 엣지가 처리하며 우리 서버에 도달하지 않는다(server: cloudflare + cf-ray, OPTIONS → 404, ACAO 없음). 백엔드 코드에 rum/beacon 관련 코드는 전무하다.
증상
프리뷰가 정상 동작하는데 콘솔에 이 에러만 남는다:
원인 (실측)
beacon.min.js(cloudflareinsights)를 자동 주입한다 —curl https://qeploy.com/응답에서 확인./cdn-cgi/rum으로 POST한다. 이 경로는 Cloudflare 엣지가 처리하며 우리 서버에 도달하지 않는다(server: cloudflare+cf-ray, OPTIONS → 404, ACAO 없음). 백엔드 코드에 rum/beacon 관련 코드는 전무하다.sandbox(Issue Issue AP: [Preview] 프리뷰 콘텐츠가 서비스와 같은 오리진에서 실행되는 문제 차단 #102,allow-same-origin미포함)로 불투명 오리진이라 이 POST가 cross-origin이 되고,Origin: null에는 ACAO가 내려오지 않아 브라우저가 차단한다.즉 프리뷰 앱 기능과 무관하며(비컨 하나가 실패할 뿐), 본 사이트에서는 same-origin이라 에러가 나지 않는다.
수정 방향
프리뷰 HTML 응답에만
Cache-Control: no-transform을 추가한다. Cloudflare는 이 지시어가 있으면 payload를 변형하지 않으므로 beacon이 주입되지 않는다(Cloudflare Web Analytics FAQ).no-transform은 Cloudflare의 압축 등 다른 변형에도 영향을 줄 수 있는데, 주입은 HTML에만 일어나므로 HTML로 한정하면 목적만 달성하고 자산 전송은 그대로 둘 수 있다.대안(코드 변경 없음): Cloudflare 대시보드에서 Web Analytics 자동 주입을 끄거나 Configuration Rule로
/api/v1/previews/*에disable_rum을 적용. 사이트 전체 분석 정책과 얽히므로 서버 헤더 쪽이 국소적이다.