반응형
n8n 1.109.1 버전 이후부터 HTTP 환경에서 프론트엔드(브라우저)와 백엔드(서버) 간 통신이 실패하는 경우입니다.
기술적 원인
n8n은 두 부분으로 구성되어 있어요.
┌─────────────────────────────────────────────────────┐
│ 브라우저 (프론트엔드) │
│ - Vue.js 기반 UI │
│ - JavaScript로 API 호출 │
└─────────────────────┬───────────────────────────────┘
│ API 요청 (/rest/settings, /healthz 등)
▼
┌─────────────────────────────────────────────────────┐
│ n8n 서버 (백엔드) │
│ - Node.js 서버 │
│ - 포트 5678 │
└─────────────────────────────────────────────────────┘
문제가 발생하는 지점:
- Cross-Origin-Opener-Policy (COOP) 헤더 문제
- 최신 n8n이 보안 강화를 위해 COOP 헤더를 추가함
- 그런데 HTTP(비보안) 환경에서는 브라우저가 이 헤더를 무시하거나 차단함
- 브라우저 콘솔에 나온 에러: "The Cross-Origin-Opener-Policy header has been ignored, because the URL's origin was untrustworthy"
- Secure Cookie 문제
- n8n이 세션 관리를 위해 쿠키를 사용
- N8N_SECURE_COOKIE=true(기본값)면 HTTPS에서만 쿠키 전송
- HTTP에서는 쿠키가 안 보내져서 인증 실패 → 401 Unauthorized
- Origin-Agent-Cluster 충돌
- 브라우저 콘솔 경고: "the origin had previously been placed in a site-keyed agent cluster"
- 브라우저 보안 정책과 n8n 헤더 설정이 충돌
왜 curl은 되고 브라우저는 안 되나?
curl http://[ip]:5678/healthz # ✅ 성공
- curl: 단순 HTTP 클라이언트, 보안 정책 없음, 헤더 무시
- 브라우저: CORS, COOP, 쿠키 정책 등 엄격한 보안 규칙 적용
브라우저는 "이 사이트 HTTP인데 보안 헤더 쓰네? 안전하지 않으니 차단!"이라고 판단하는 거예요.
n8n 측 대응 상황
GitHub 이슈에 따르면:
- 1.108.2 버전까지는 정상 작동
- 1.109.1 버전부터 문제 발생
- 아직 공식 수정 배포 안 됨 (2025년 9월~11월 현재 진행 중)
해결 방법 2가지
방법장점단점
| 1. 버전 다운그레이드 (1.68.0) | 빠름, 간단 | 최신 기능 못 씀 |
| 2. HTTPS 설정 (Nginx + SSL) | 보안 강화, 최신 버전 사용 가능 | 도메인 필요, 설정 복잡 |
nginx로 https 연동할게 아니라 가볍게 쓸거라면 버전을 다운그레이드하여 사용할 것을 권장합니다.
반응형