古い木の机の上で、小さな白い紙の札が細い封筒の口からあふれている

温泉ブログ(温泉ランド.com)はWordPressで運営している。最近、記事を直して「更新」を押すと、ときどきこう出るようになった。

更新に失敗しました。 返答が正しい JSON レスポンスではありません。

毎回ではない。通るときもある。10月13日の午前2時半ごろ、AI(Claude)に「原因わかる?」と聞いた。

答えは、記事の中身でもサーバーの故障でもなかった。僕のブラウザにたまっていた、小さな目印だった。

サーバーは「431」で断っていた

AIがサーバーの記録を見ると、10月11日の昼に、尻焼温泉の記事の更新が何十回も断られていた。あとで数えると、3分ほどで45回だった。

断った理由は「431」という番号だった。ブラウザが本文といっしょに送る「添え書き」が大きすぎる、という意味だ。

あの分かりにくいエラー文の正体も分かった。サーバーは断るとき、短いエラーのページを返す。WordPressの編集画面は、返事をJSONという決まった形で受け取るつもりで待っている。そこへ別の形のページが返ってきたので、「正しい JSON レスポンスではありません」と出ていた。

記事の中身は関係なかった。431は、サーバーが本文を読む前に、入口で断る番号だからだ。AIがブラウザを通さずに同じ記事へ送ってみると、431では断られなかった。

添え書きを大きくしていたのは、閲覧数を数える目印

添え書きを大きくしていたのは、Cookie(クッキー)だった。サイトがブラウザに預ける、小さな目印のようなものだ。

ブログのテーマ(賢威8)には、記事の閲覧数を数える仕組みがある。記事を1本開くたびに、「この記事は数えた」という目印を1つブラウザに付ける。同じ人が何度開いても、1回しか数えないためだ。目印は記事ごとに1つずつ増えていく。

この目印が原因だと突き止めたのは、AIがテーマの中身を読んだからだ。僕のブラウザの中に目印がいくつあったかは、数えていない。

本来、この目印はブラウザを閉じれば消える。でも、閉じずに使い続けていると残る。僕はChromeを、アカウントごとにウィンドウを分けて開いていることが多い。AIの見立てでは、閉じずにいるあいだに、目印がたまっていった。

AIは最初、Chromeを「前回開いていたページを開く」設定で使っていると、閉じても目印が残る、と説明した。あとでAIにChromeの設定を見てもらうと、僕のChromeはその設定になっていなかった。

ブログには記事が1,000本以上ある。運営している僕は、直したり確かめたりで、毎日いくつもの記事を開く。そのたびに目印が1つずつたまっていった。

サーバーには、添え書きの大きさと数に上限がある。AIの見立てでは、記事を読むだけなら上限の手前で収まり、更新は送る情報が少し増えるので上限を超える。目印の大きさそのものは測っていない。

記録を見ると、10月11日に断られていたあいだも、編集画面が自動で送る保存(自動保存)は通っていた。断られていたのは、ほとんどが「更新」だった。

すぐできる手当て

AIが最初に出した手当ては、そのサイトのCookieだけを消すことだった。

  1. Chromeの「設定」→「プライバシーとセキュリティ」→「サードパーティ Cookie」→「すべてのサイトデータと権限を表示」を開く。名前は「サードパーティ」だが、ここから自分のサイトの分も消せる
  2. 自分のサイトのアドレス(僕の場合は onsenland.com)を探して、ゴミ箱のマークで消す
  3. WordPressにログインし直す

ログアウトするだけでは、この目印は消えない。

テーマは書き換えずに直した

消しても、また記事を開けばたまっていく。それで、根本から直してもらった。

テーマのこの部分は、「同じ名前の処理が先に用意されていれば、そちらを使う」作りになっていた。そこで、僕が使っている自作のプラグイン(WordPressに機能を足す部品)に同じ名前の処理を入れて、置き換えた。テーマのファイルには触っていないので、テーマを更新しても上書きされない(テーマ側の作りが変わらない限り)。

中身は2つだ。

  • ログインしている人(管理者)には、目印を付けない。閲覧数にも数えない
  • ログインしている人のブラウザに残っている目印は、ページを開くたびに60個ずつ消す

読みに来た人への動きは、今までと同じにした。

前に、試験は全部合格したのに、本物のWordPressでは有効化すらできなかったプラグインがあった(そのときの記事)。それで今回は、僕に渡す前に、AIが手元のパソコンに試し用の本物のWordPressを用意して、そこで動かした。テーマは賢威8そのものではなく、同じ呼ばれ方をまねた部品で試している。

  • 読者が初めて記事を開くと、目印が付いて閲覧数が1増えた。2回目は増えなかった
  • ログインした状態で古い目印を80個持たせて開くと、新しい目印は付かず、60個が消えた。次に開くと、残りの20個も消えた

直したプラグインが、同じ原因で入れられなかった

直したプラグインをブログに入れようとすると、エラーで止まった。

あとでAIにこう伝えた。

そもそもプラグインの更新をしようとしたらエラーになってできなかったから、クッキーは削除してる

プラグインを入れる操作も、サーバーに「送る」操作だ。たまった目印で、これも上限を超えていた。Cookieを消したら入れられた。

あとでAIにサーバーの記録を数え直してもらうと、このときのことも残っていた。3時11分に、プラグインを入れる操作が3回続けて431で断られていた。Cookieを消してログインし直したあと、3時14分に入っていた。この夜は2時27分から3時11分までに、画面が裏で自動で送る通信も含めて、全部で82回断られていた。

「確かめる」の予定日から、5日たっていた

サーバーの記録は、1日半ほど遅れて出てくる。入れた直後には、本当に直ったかを確かめられなかった。AIは、10月15日に記録を見て431が出ていないか確かめる、とやることの一覧に書いた。

その確認には、10月20日までだれも手を付けなかった。この記事の材料をAIに集めてもらっていた17日に、AIが、確認がまだ済んでいないと気づいた。数え直したのは20日だった。

日付431で断られた回数
10月5日〜10日0回
10月11日49回
10月12日0回
10月13日(入れる前)82回
10月14日〜18日0回

10月11日の49回のうち45回が、尻焼温泉の記事の更新だった。残りは、管理画面のほかの操作だ。

10月14日から17日までに、編集画面からサーバーへ送ったのは100回だった。99回は通り、1回は別の理由(サーバーの中のエラー)で失敗した。431で断られたものは1回もなかった。通った99回のうち、僕が「更新」を押したのは15回で、残りの84回は編集中に自動で保存されたものだ。18日は編集画面を使っていない。

ただ、これだけでは「プラグインが効いた」とまでは言えない。同じ夜に、Cookieを手で消しているからだ。目印は少しずつしかたまらないので、手で消しただけでも、しばらくは出なくて当たり前だ。

プラグインの効き目は、記録を待たなくても確かめられる。ログインしたまま記事を何本か開いて、ブラウザの中の目印が増えていないかを見ればいい。やり方は、下の4に書いた。

WordPressで同じエラーが出る人へ

  1. 「返答が正しい JSON レスポンスではありません」は、サーバーが別の理由で断ったときにも出る。記事の中身を疑う前に、レンタルサーバーの管理画面などで見られる「アクセスログ」で、失敗した時刻の行に「431」(サーバーによっては「400」)とあるかを見る。見方が分からなければ、先に次のCookie消しを試す。消して直れば、同じ原因の見込みが高い
  2. 431なら、ブラウザが送る添え書きが大きすぎる。多くはCookieがたまったせいだ。そのサイトのCookieを消して、ログインし直す
  3. ブラウザを閉じずに使い続けていると、閉じれば消えるはずのCookieが残り続ける
  4. 閲覧数を数える仕組みが、記事ごとにCookieを付けていないか見る。Chromeで自分のサイトを開いてF12キーを押し、「アプリケーション」→「Cookie」→ 自分のサイトのアドレスを開く。「pv123」のように記事の番号が付いた名前がずらりと並んでいれば、それが原因だ。たくさんの記事を開く運営者ほどたまる

分かったこと

「ときどき失敗する」不具合は、記事の中身でもサーバーの故障でもなく、僕のブラウザの使い方とテーマの作りが重なって起きていた。どちらも、それだけなら問題はなかった。

もう1つは、AIも僕も、確かめる予定を一覧に書いたことで安心していたことだ。431が出なくなったと言えるようになったのは、記録を数えてからだった。プラグインが効いたと言うには、ブラウザの中の目印を見る、もう一歩が要る。

おすすめ商品

PR
【ポイント10倍 10/20 00:00~10/21 23:59まで】アルティム…

【ポイント10倍 10/20 00:00~10/21 23:59まで】アルティム…

10月22日に楽天市場 ジャンル別ランキングから選んだ商品