피드로 돌아가기
EspoCRM Lead capture and Preflight Checks.
Dev.toDev.to
Backend

.htaccess 설정을 통한 EspoCRM CORS Preflight 해결 및 Lead Capture 구현

EspoCRM Lead capture and Preflight Checks.

Circles And Lambdas2026년 5월 11일7intermediate

Context

웹사이트와 EspoCRM 간의 Lead Capture 통합 과정에서 서로 다른 도메인 간 통신으로 인한 CORS Policy Error 발생. EspoCRM 제공 API와 JavaScript fetch 기반의 클라이언트 구현체 간의 Access-Control-Allow-Origin 헤더 불일치로 데이터 전송 불가 상태 직면.

Technical Solution

  • Client-side Header 추가 시도 배제: CORS 응답 헤더는 서버 측 제어 영역임을 식별하여 요청 헤더 수정 방식 포기
  • config.php 설정 한계 분석: leadCaptureAllowOrigin 설정값이 실제 응답 헤더에 반영되지 않는 EspoCRM 내부 로직의 결함 파악
  • .htaccess 수준의 Preflight 제어: OPTIONS 메서드 요청을 서버 최상단에서 가로채어 유효한 CORS 헤더를 즉시 반환하는 구조 설계
  • Backend 로직 최적화: 서버 코드 내 불필요한 Origin 할당 로직을 제거하여 .htaccess에서 설정한 헤더와의 충돌 방지
  • Fetch API 기반 비동기 구현: Composer 패키지 대신 유연한 제어가 가능한 JavaScript fetch를 통한 폼 데이터 전송 로직 구축

1. CORS 에러 발생 시 Request Header가 아닌 Response Header 설정 여부 확인

2. 브라우저의 Preflight(OPTIONS) 요청에 대해 서버가 200 OK와 적절한 Access-Control 헤더를 반환하는지 점검

3. 프레임워크 내부 설정이 작동하지 않을 경우 웹 서버(Apache/Nginx) 설정 파일에서 직접 헤더 제어 검토

4. API 응답 시 중복된 Origin 헤더가 설정되어 충돌이 발생하는지 로그 분석

원문 읽기