WordPressで突然「応答が正しいJSON応答ではありません」エラーが発生した場合

오늘 WordPressで記事を書いて保存したいです。 '更新に失敗しました。応答が正しいJSON応答ではありません。 エラーが発生しても保存できない問題が発生しました。 2日前までは何の問題もなく保存がうまくいきましたが、突然このような症状が現れたので、慌てました。

このように突然このエラーが発生した場合は、いくつかの原因を疑うことができます。最近プラグインを新しくインストールした場合、または既存のプラグインが更新された場合は、そのプラグインが原因である可能性があり、セキュリティプラグインまたはサーバーファイアウォール設定が変更された場合にもこの現象が発生する可能性があります。まれに、私のようにブラウザのCookieが破損している可能性があります。

WordPress サイトである日、突然正しいJSONレスポンスではないというエラーメッセージが表示され、投稿が保存されない問題が発生した場合は、チェックすることを検討します。

WordPressで突然「応答が正しいJSON応答ではありません」エラーが発生した場合

「応答が正しいJSON応答ではありません」エラー

WordPressがバージョン5.0にアップデートしながらブロックエディタを導入しました。

ブロックエディタ(Gutenberg)で投稿を保存すると、サーバーにREST API要求が送信され、サーバーが「この要求を処理する権限がない」と拒否すると、403 Forbiddenエラーが発生します。この時点で、サーバーはJSONの代わりにHTMLエラーページを返すため、「正しいJSON応答ではありません」というメッセージが表示されます。

「応答が正しいJSON応答ではありません」エラー

403エラーの原因はさまざまですので、以下の手順で確認して問題が解決するかどうかを確認してください。

①ブラウザクッキーを削除して再ログイン
最初に試す方法です。ブラウザに保存されたCookieが破損している場合、これだけで解決されることがよくあります。

② Wordfenceなどのセキュリティプラグインの一時無効化
セキュリティプラグインのファイアウォールがREST APIリクエストをブロックすることがあります。 ワードフェンスを無効にしても問題が解決した場合は、Wordfenceの設定を確認してください。

これに関連し WordPress フォーラムでは WordPress 管理者ページ » Wordfence » すべてのオプション » 無差別代入攻撃 (Brute Force) 防止 » 追加オプションから "'/?author=N' Scan, oEmbed API, WordPress REST APIと WordPress XML サイトマップによるユーザー名のチェックの防止" (Prevent discovery of usernames through '/?author=N' scans, the oEmbed API, the WordPress REST API、and WordPress XMLサイトマップ) オプションを無効にすることをお勧めします。

WordPress Wordfenceセキュリティプラグイン

③ホスティング会社Webファイアウォール(WAF)確認
共有ホスティング環境では、ホスティング会社のWebファイアウォールがブロックされることがあります。実際、最近ガビアでホストされています WordPress サイトでSureRank SEO設定を保存すると、このようなエラーが発生してガビアカスタマーセンターに連絡することで、担当者が「Webファイアウォールの影響で症状が発生したと推定され、ファイアウォール設定を最小限に変更」した後に問題が解決されました。

ガビアホスティング

④ プラグインの衝突確認
プラグインの競合によって誤ったJSON応答エラーが発生することもあります。プラグインを1つずつ無効にし、問題を引き起こすプラグインを特定するようにします。

⑤ LimitRequestFieldSize 設定などサーバーの問題

共有ホスティング環境では、ApacheサーバーのLimitRequestFieldSize設定によって同じエラーが発生する可能性があります。この設定はHTTP要求ヘッダーの最大サイズを制限する役割を果たしますが、デフォルトは8,190バイトに設定されている可能性があります。 WordPressにログインすると、ブラウザはログイン認証Cookie(wordpress_logged_in_)を含む複数のCookieを保存し、サーバーに要求を送信するたびに、これらのCookieをヘッダーに入れて一緒に送信します。 WP Dark Modeプラグインのように別々のCookieを生成するプラグインが複数インストールされていると、Cookieのサイズが大きくなり、Apacheの制限を超えてしまいます。 WordPressにリクエストを渡す前にブロックし、JSONエラーが発生します。

ブラウザのCookieを削除すると一時的に解決される可能性がありますが、Cookieが再び積み重ねられると再発する可能性があるため、基本的な解決のためにホスティング会社に連絡してLimitRequestFieldSizeの値を16,384以上に上方修正してもらう必要があります。

ブラウザのCookieの破損による無効なJSON応答エラー

今日、突然JSONレスポンスエラーが原因で投稿が保存されない問題が発生し、最初に最近更新されたObject Cache Proプラグインを無効にしましたが、問題は解決されませんでした。また、サーバーの問題かと思ってクラウドウェイズでサーバーを再起動しても何の役にも立ちませんでした。

次のアクションで Wordfence で WordPress 担当者が推奨する '/?author=N' Scan, oEmbed API... 関連オプションを無効にしても、ワードフェンスセキュリティプラグインを無効にしてもエラーが発生し続けました。

Google Chrome開発者ツールでエラーメッセージをチェックして ブラウザに保存されたCookieが破損されたのが今回のエラーの原因だったと推定されました。

クッキーを鍵にたとえればわかりやすいです。

WordPress 管理者ページにログインすると、ブラウザは「この人は管理者としてログインしました」という情報を クッキーという形で保存します。その後、記事を保存するたびに、このクッキーを鍵のようにサーバーに提示し、「私は管理者よ、保存してください」と要求します。

ところがある時点でこの鍵(クッキー)が曲がってしまいました。私はサーバーに鍵を提示しましたが、外観が変わってサーバーが「この鍵は私たちではありませんか?」と拒否したのは403エラーです。

実際、今回のケースでクッキーの内部を覗いてみると、以下のような異常なパターンが発見されました。

# 정상
editor=html&libraryContent=browse

# 손상된 상태 (& 기호가 비정상적으로 반복 중복됨)
editor=html&ampampampampampampampamp;libraryContent=browse

& 1つのシンボルが入るべき場所に ampampampampampampampampが繰り返し重複して挿入され、クッキーの値が混乱していることがわかります。 WordPress サーバーはこの破損したCookieを正常に読み取ることができず、ログイン状態を確認できず、最終的に投稿の保存要求を拒否しました。

特定の文だけを保存できない場合 - WAF(Webファイアウォール)によって要求がブロックされて問題が発生する

Avadaのセキュリティ脆弱性パッチに関する記事を作成して[保存]をクリックすると、このエラーが発生しました。おそらく、本文に含まれる特定の文字列をWebファイアウォールでマルウェアとして認識してブロックしたと推定されます。

疑わしい文字列を削除して別の表現に置き換えるため、問題は再発しませんでした。特定の文だけを保存できない場合、WAFによって要求がブロックされたことが原因である可能性があります。

本文に含まれる経路巡回パターン(../../)、攻撃用パラメータ名、脆弱関数名などを Naver サーバーのファイアウォールが実際の攻撃の試みとして認識されました。リクエスト自体をブロックまたは改ざんしながら、サーバーは正常なJSON応答を返すことができず、クライアント側で「正しいJSON応答ではない」というエラーが表示されます。

FAQ(자주묻는질문)

Q1.ブラウザクッキーを削除すると WordPressからログインが解除されますか?

A. はい、クッキーを削除するとログイン状態が解除され、再度ログインする必要があります。ただし、作成中だった文は WordPressが一時保存(自動保存)しておくことが多いので、再ログイン後に投稿編集画面に戻ると、ほとんど回復できます。重要な内容であれば、キャッシュとCookieを削除する前に事前に内容をコピーして別のファイル(テキストファイルなど)として保存することが安全です。

Q2. Cookieを削除しても問題が解決しない場合はどうすればよいですか?

A. ブラウザ Cookie/キャッシュ削除後も同じエラーが発生する場合は、別のブラウザやシークレットウィンドウで接続してテストしてみてください。それでも解決しない場合は、プラグインを1つずつ無効にして競合するかどうかを確認し、共有ホスティング環境の場合は、ホスティング会社のカスタマーセンターにWebファイアウォール設定の確認を依頼できます。

Q3.このエラーが発生したときに書かれていた記事は消えませんか?

A. WordPress ブロックエディタはデフォルトで60秒ごとに自動保存機能が動作するため、文章内容が完全に消えることはまれです。投稿編集画面の上部にある「改訂版」または一時保存項目から以前の内容を復元できます。ただし、エラーの直前に作成した内容は一部失われる可能性があるため、重要な内容は定期的に手動で保存する習慣を挙げることをお勧めします。 (JSON応答エラーで保存できない場合は、作成した内容をテキストファイルなどで保存しておくと安心できます。)

Q4.クラシックエディタ(Classic Editor)をインストールすると、このエラーを回避できますか?

A. 文作成及び保存に限っては臨時方便となります。 クラシックエディタはREST APIの代わりに従来の方法で投稿を保存するため、ブロックエディタで発生したJSONエラーを回避できます。しかし、SureRank、Yoast SEOなど、REST APIを使用する他のプラグインはまだ同じエラーが発生する可能性があるため、根本的な原因を見つけて解決することが望ましいです。

Q5.このようなエラーが再発しないようにするにはどうすればよいですか?

A. Cookieの破損が原因の場合、特定のプラグインの更新や設定の変更がCookieの値を誤って処理して発生することがよくあります。再発防止のため、プラグインのアップデート後に異常の症状がないことを確認し、エラーが突然発生した場合、最初にブラウザのCookieを削除しようとすることを習慣化すれば、迅速に対処できます。また、セキュリティプラグインのREST API関連設定が過度に制限されていないことを定期的に確認することも役立ちます。

最後に、

数年前だけでも「応答が有効なJSON応答ではありません」というエラーが発生するケースがよく報告されていますが、最近入っては大幅に減ったようです。

クラシックエディタ(Classic Editor)をインストールすると、書き込み画面でこのエラーを回避できます。しかし、クラシックエディタはブロックエディタへの移行中に一時的に提供されるプラグインです。さらに、SureRank SEOのようにREST APIを利用するプラグインは、クラシックエディタをインストールするかどうかにかかわらず同じエラーが発生する可能性があり、根本的な解決策にはなりません。結局のところ、クラシックエディタはあくまで一時的な方法にすぎません。

参照

コメントを残す

コメントを残す