当サイトではアフィリエイト広告を利用しています

「返答が正しいJSONレスポンスではありません」エラーの解決方法

エラー

WordPressサイトを作成していた時、パーマリンクを変更すると、突然、投稿ページの保存ができなくなりました。

保存しようとすると、「更新に失敗しました。返答が正しいJSONレスポンスではありません」というエラーが出ました。

なぜ起きたのかは不明ですが、色々な方法を試して、結果的に解決できたので、その内容をご紹介します。

目次

JSONレスポンスのエラー発生状況

サイト、サーバーなどの状況

当サイトではなく、サイト制作のサポートで以下のサイトを扱っていました。

  • テーマ:DIVER
  • サーバー:ConoHa WING
  • 海外からアクセスしていました。
    VPNは使わず、ConoHa WINGの海外アクセス制限の「ダッシュボード」をOFFにしていました。

JSONレスポンスのエラーが発生した状況

JSONエラー

サイトの立ち上げ段階で、パーマリンクをデフォルトからカスタム構造に変更しました。

すると、投稿ページを更新しようとすると、「更新に失敗しました。返答が正しいJSONレスポンスではありません」とエラーメッセージが表示され、更新できなくなりました。

パーマリンクは、カスタム構造だけではなく、デフォルト以外は全てエラーになりました。

パーマリンク設定

JSONファイルとはなんでしょうか。

分かりにくい仕組みなのですが、WordPressでデータのやり取り等に使われています。

JSONとは

JSONとは、JavaScript Object Notationの略で、ジェイソンと呼ばれます。
JSONはJavaScriptで定義されているオブジェクト表記法の1つで、テキスト形式で表記されるので、簡単にデータ交換ができます。
そのためJavaScriptに限らず、主要なプログラム言語から利用されています。
参考:アンドエンジニア

JSONレスポンスのエラー 原因と解決策

エラーが起きた原因は、①htaccessファイルの記載内不足と②RESET-APIの設定だったようです。

なぜ、そのようになったかは分かりませんでしたが、以下の2点を修正することで解決しました。

  • .htaccessファイルに記載を追加
  • RESET-APIをON⇒OFFに変更

.htaccessファイルに追記した内容

.htaccessファイルを編集する前は、編集前に必ずバックアップを取って保存してください。
サイト全体に影響する重要なファイルなので、問題が起きた場合はバックアップファイルで元に戻しましょう。

ConoHa WINGのファイルマネージャーを使って.htaccessファイルに追記しました。

ConoHa WINGファイルマネージャー

以下が追記したコードです。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

元の.htaccessファイルの内容

元の.htaccessファイルの内容は以下の通りでした。
この下に先のコードを追記しました。

SetEnvIf Request_URI ".*" AllowForeignWpLogin
SetEnvIf Request_URI ".*" UnlimitedWpLogin

当サイトも含めて、これまで作成したサイトの場合、追記したコードは、自動的に入っていました。

今回、なぜ、コードが抜け落ちていたかは不明です。

これまで起きたことがなかったのですが、サーバーやテーマの相性もあるのでしょうか。

RESET-API の設定変更

.htaccessファイルの修正だけでは、改善されなかったので、更に色々試しました。

RESET-APIをON⇒OFFに変更すると、エラーが出なくなり、更新できました。

以下はConoHa WINGの管理画面の変更箇所です。

ConoHa WING

海外からのアクセスも原因の一つ

エラーが消え、ページを更新できるようになった後に、VPNを立ち上げて、RESET-APIを今度はOFF⇒ONに戻しましたが、問題は起きませんでした。

この点については、私が海外からアクセスしていたことが原因だったようです。

私がサポートしていたサイトの所有者は、日本にいるので、RESET-APIはONでも問題ないです。

ちなみに、当サイトはエックスサーバーを使っています。海外からアクセスしており、RESET-APIはOFFにしています。

エラー解消のため 他に試したこと

今回の問題が起きて、原因になると言われているものを色々試しました。

私の場合は、結果的に前述の2点以外、解決にはつながりませんでした。

  • パーマリンクの設定で再保存する
  • サーバーでWAF(Webアプリケーションファイアウォール)の設定を変更(ON→OFF)
  • プラグイン無効化
  • ブラウザキャッシュの無効化

まとめ

今回のトラブルは、海外からアクセスしていたこともあり、原因が2つあって、解決するのに苦労しました。

結果的に以下の2つの対応で解決しました。

  • .htaccessファイルに記載を追加
  • RESET-APIをON⇒OFFに変更(海外からアクセスしていたため)

更新ができないことは、致命的なので、焦ってしまいます。

同様のトラブルは結構あり、.htaccessファイルの記載内容が原因のケースも多いようです。

以下のCocoonフォーラムで、同様のJSON レスポンスエラーについて、様々な解決策が提示されていて、参考になりました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次