워드프레스 ‘응답이 올바른 JSON 응답이 아닙니다’ 오류 원인과 해결 순서
워드프레스에서 글을 저장하거나 플러그인 설정을 변경할 때 ‘업데이트에 실패했습니다. 응답이 올바른 JSON 응답이 아닙니다’라는 메시지가 나타나는 경우가 있습니다. 며칠 전까지 정상적으로 작동하던 사이트에서 갑자기 발생하기도 해서 워드프레스 자체의 오류처럼 보이지만, 실제로는 브라우저와 서버 사이의 REST API 요청이 차단된 상황일 가능성이 큽니다.
특히 글 저장이 되지 않는다면 작성한 내용이 사라질까 걱정되기 마련입니다. 먼저 오류가 의미하는 바를 이해한 뒤, 쿠키와 보안 설정부터 서버 환경까지 범위를 넓혀가며 확인하는 편이 빠릅니다.
JSON 오류처럼 보이지만 실제로는 403 차단일 수 있다
워드프레스 5.0부터 기본 편집기로 사용된 블록 에디터, 즉 구텐베르크는 글을 저장할 때 REST API를 통해 서버에 요청을 보냅니다. 이 요청이 정상적으로 처리되면 서버는 편집기가 이해할 수 있는 JSON 형식의 응답을 반환합니다.
문제는 보안 플러그인이나 웹 방화벽이 해당 요청을 권한 없는 접근으로 판단해 거부할 때 생깁니다. 이 경우 서버는 403 Forbidden 오류를 반환할 수 있습니다. 그런데 워드프레스 편집기는 JSON을 예상하고 있었으므로, 서버가 보낸 HTML 오류 페이지를 해석하지 못하고 ‘올바른 JSON 응답이 아닙니다’라고 표시합니다.
따라서 이 메시지만 보고 JSON 문법이나 글 내용만 의심할 필요는 없습니다. 실제 원인은 인증 쿠키, REST API 접근 권한, 방화벽 규칙, 플러그인 충돌처럼 요청이 서버에 도달하거나 처리되는 과정에 있을 수 있습니다.
| 증상 범위 | 먼저 의심할 계층 |
|---|---|
| 모든 글에서 저장 실패 | 인증 쿠키, REST API 권한, 플러그인 충돌 |
| 특정 글에서만 실패 | 웹방화벽이 본문 문자열을 공격 패턴으로 오인 |
| 시크릿 창에서는 정상 | 브라우저 쿠키·캐시 손상 |
| 쿠키를 지우면 잠시 되다 재발 | 서버의 요청 헤더 크기 제한 |
| 보안 플러그인을 끄면 정상 | REST API 차단 규칙 |
가장 먼저 브라우저 쿠키를 삭제하고 다시 로그인한다
갑자기 문제가 시작됐다면 가장 부담이 적은 확인 방법은 해당 사이트의 쿠키를 삭제한 뒤 관리자 페이지에 다시 로그인하는 것입니다. 쿠키가 손상되거나 잘못된 값으로 저장되면 서버가 로그인 상태를 정상적으로 확인하지 못할 수 있습니다.
쿠키를 삭제하면 로그인 상태가 풀리므로 관리자 계정으로 다시 로그인해야 합니다. 삭제 전에 작성 중인 글의 내용을 텍스트 파일이나 다른 문서에 복사해 두는 것이 안전합니다. 블록 에디터가 자동 저장한 내용은 재로그인 후 복구되는 경우가 많지만, 오류 직전에 입력한 부분까지 항상 보존된다고 단정할 수는 없습니다.
이 사례에서는 쿠키 내부에 정상적인 & 대신 &ampampampampampampamp;처럼 문자가 반복 삽입된 패턴이 확인되었습니다. 이런 값은 서버가 정상적인 인증 또는 편집기 상태 정보로 읽기 어렵습니다. 쿠키 삭제 후 문제가 사라진다면 서버를 재부팅하거나 플러그인을 대거 변경하기 전에 브라우저 데이터 손상이 원인이었을 가능성을 우선 고려할 수 있습니다.
쿠키를 지워도 동일하다면 다른 브라우저나 시크릿 창에서 관리자 페이지에 접속해 보세요. 새 환경에서는 정상적으로 저장된다면 기존 브라우저의 쿠키나 캐시 문제로 범위를 좁힐 수 있습니다.
보안 플러그인과 REST API 차단 설정 확인
Wordfence 같은 보안 플러그인은 악성 요청을 막기 위해 관리자 요청과 REST API 접근을 제한합니다. 설정이 변경됐거나 플러그인이 업데이트된 직후부터 오류가 발생했다면 일시적으로 해당 플러그인을 비활성화해 증상이 사라지는지 확인할 수 있습니다.
비활성화 상태에서 저장이 정상적으로 된다면 플러그인을 계속 끈 채 운영하기보다는 방화벽 설정을 조정해야 합니다. Wordfence에서는 관리자 페이지의 Wordfence > 모든 옵션 > 무차별 대입 공격(Brute Force) 방지 > 추가 옵션에 있는 사용자 이름 검사 방지 관련 설정이 REST API 요청에 영향을 줄 수 있습니다. 이 설정은 다음 기능을 한꺼번에 제한합니다.
/?author=N스캔- oEmbed API
- 워드프레스 REST API
- 워드프레스 XML 사이트맵을 통한 사용자 이름 확인
이 옵션을 조정할 때는 보안 수준이 달라질 수 있으므로 무조건 해제하기보다, 오류가 발생한 시점의 변경 내역과 사이트의 보안 요구 사항을 함께 확인해야 합니다. 보안 플러그인을 끈 상태에서만 문제가 해결된다면 REST API 전체를 허용할지, 특정 요청만 예외 처리할지는 플러그인 문서나 운영 환경에 맞춰 판단해야 합니다.
특정 글에서만 오류가 난다면 웹 방화벽을 의심한다
모든 글 저장이 실패하는 것이 아니라 특정 글에서만 오류가 발생한다면 원인이 달라질 수 있습니다. 본문에 포함된 문자열이나 코드 형태를 웹 방화벽이 공격 패턴으로 오인했을 가능성이 있습니다.
예를 들어 취약점 설명 글에 ../../와 같은 경로 순회 패턴, 공격에 사용되는 파라미터 이름, 특정 취약 함수명이 들어가면 실제 공격 요청으로 판정될 수 있습니다. 이때 방화벽은 요청을 차단하거나 일부 내용을 변형하고, 워드프레스에는 정상적인 JSON 응답이 전달되지 않습니다.
실제 사례에서도 아바다 테마의 보안 취약점 패치에 관한 글을 저장할 때만 오류가 발생했고, 의심되는 문자열을 삭제하거나 다른 표현으로 바꾸자 문제가 재발하지 않았습니다. 이 경우 글 전체를 삭제할 필요는 없습니다. 문제가 되는 표현을 문단별로 잠시 제거하면서 저장을 시도하면 차단을 유발하는 문자열을 찾는 데 도움이 됩니다.
다만 보안 관련 단어나 코드 예시를 무조건 바꾸는 것이 근본 해결책은 아닙니다. 정상적인 콘텐츠가 반복해서 차단된다면 호스팅사나 WAF 관리자에게 해당 요청의 차단 로그를 확인해 달라고 요청하는 편이 정확합니다.
플러그인 충돌과 서버의 헤더 크기 제한 점검
최근 설치했거나 업데이트한 플러그인이 있다면 하나씩 비활성화하면서 충돌 여부를 확인해야 합니다. Object Cache Pro처럼 최근 변경된 플러그인을 먼저 점검할 수 있지만, 특정 플러그인을 끄는 것만으로 원인을 확정해서는 안 됩니다. 플러그인을 비활성화했는데도 오류가 계속됐다면 쿠키나 방화벽 등 다른 계층을 확인해야 합니다.
요청 헤더 크기 제한
공유호스팅에서는 Apache의 LimitRequestFieldSize 설정도 원인이 될 수 있습니다. 이 값은 HTTP 요청 헤더의 최대 크기를 제한합니다. 기본값이 8,190바이트로 설정된 서버에서 여러 플러그인이 쿠키를 추가하면 로그인 쿠키를 포함한 전체 요청 헤더가 제한을 넘을 수 있습니다.
이때 Apache가 요청을 워드프레스에 전달하기도 전에 차단하므로 편집기는 JSON 대신 오류 응답을 받게 됩니다. WP Dark Mode처럼 별도의 쿠키를 만드는 플러그인이 여러 개 설치된 환경에서는 쿠키가 빠르게 커질 수 있습니다.
브라우저 쿠키를 삭제하면 당장은 저장이 될 수 있지만, 같은 플러그인들이 쿠키를 다시 생성하면 문제가 재발할 수 있습니다. 반복된다면 호스팅사에 LimitRequestFieldSize 값을 16,384 이상으로 조정할 수 있는지 문의해야 합니다. 공유호스팅 사용자는 서버 설정 파일을 직접 수정할 수 없는 경우가 많으므로 고객센터의 확인이 필요합니다.
호스팅사 WAF와 임시 우회 방법의 한계
가비아 같은 호스팅 환경에서는 웹 방화벽 설정이 REST API 요청이나 특정 콘텐츠를 차단할 수 있습니다. 실제로 SureRank SEO 설정을 저장할 때 오류가 발생했지만, 호스팅사에서 웹 방화벽의 영향을 확인하고 설정을 최소한으로 변경한 뒤 문제가 해결된 사례가 있습니다.
호스팅사에 문의할 때는 단순히 ‘JSON 오류가 난다’고 전달하기보다 다음 정보를 함께 제공하는 것이 좋습니다.
- 문제가 발생한 관리자 페이지와 작업 내용
- 모든 글에서 발생하는지, 특정 글에서만 발생하는지
- 오류가 시작된 시점
- 최근 설치·업데이트한 플러그인
- 다른 브라우저나 시크릿 창에서도 같은지
- 브라우저 개발자 도구에 표시된 403 또는 REST API 오류
클래식 에디터를 설치하는 방법도 있습니다. 클래식 에디터는 블록 에디터와 다른 방식으로 글을 저장하므로 글 작성과 저장 과정에서 발생하는 REST API 기반 JSON 오류를 우회할 수 있습니다. 하지만 SureRank나 Yoast SEO처럼 별도로 REST API를 사용하는 플러그인 설정까지 해결해 주지는 않습니다. 따라서 클래식 에디터는 임시로 작업을 이어가기 위한 방법에 가깝고, 방화벽이나 인증 문제의 근본 해결책은 아닙니다.
글 유실을 줄이면서 원인을 좁히는 순서
작성 중인 글이 중요하다면 먼저 내용을 별도 파일에 복사합니다. 이후 브라우저 쿠키 삭제와 재로그인, 다른 브라우저 또는 시크릿 창 테스트를 진행합니다. 그래도 해결되지 않으면 보안 플러그인을 잠시 비활성화하고, 최근 업데이트된 플러그인을 하나씩 점검합니다.
모든 글에서 오류가 난다면 인증 쿠키, REST API 권한, 플러그인 충돌, 서버 헤더 제한을 우선 살펴보는 편이 좋습니다. 반대로 특정 글에서만 실패한다면 본문 문자열을 조금씩 나누어 저장해 보면서 WAF가 차단하는 패턴을 확인해야 합니다. 공유호스팅에서는 웹 방화벽 로그와 LimitRequestFieldSize 설정을 호스팅사에 문의하는 것이 가장 빠를 수 있습니다.
블록 에디터는 자동 저장과 개정판 기능을 제공하지만, 저장 요청 자체가 막힌 시점의 최신 입력분까지 보장하지는 않습니다. 오류가 반복되는 동안에는 수동 백업을 병행하고, 임시 우회 방법으로 작업을 이어가더라도 쿠키·보안 플러그인·WAF·서버 설정 중 어느 계층에서 요청이 거부되는지 확인해야 재발을 줄일 수 있습니다.