匿名質問者

HTTPステータスコード499について


javaのWEBシステムを開発しているのですが
ブラウザでリクエストを一回しか実行していないつもりのものが
2回処理されるという現象がおき、アクセスログを見たところhttpステータス499の直後に200のログがあり、
アプリサーバ側は2回処理された結果になりました。

初めて目にする499のステータスなので
ネットで調べてみたのですが、4xxはクライアント側のエラーという以外
詳細がわからず、対応に困っています。
そもそも499事態、特別なコードなのでしょうか
また、499の場合のブラウザの動き(強制的に再度リクエストをおこなうなど)
ご存知の方、いらっしゃいましたらご教授いただけますでしょうか

回答の条件
  • 1人10回まで
  • 登録:
  • 終了:2013/01/21 20:05:03

回答1件)

匿名回答1号 No.1

http://www.iana.org/assignments/http-status-codes/http-status-codes.xml
公式には割り当てられていません。
たぶん、アプリケーション側で独自に返しているのでしょう。
思いつくところでは、

  • クライアントからのリクエストが仕様外で通常の4xx系に当てはまらないシステム独自のエラーなので、将来にわたって一番大丈夫そうな499をとりあえず返すことにした
  • バグでよくわからないエラーが発生する時があるが500を返したくない。501以降は使われているので499にしてみた

とか?
なにかエラーメッセージが返されているかもしれません。特にメッセージが入ってなければ、意図は仕様書かコードか作った人に聞くかしないとわからないかもしれません。
2回アクセスがあるのはもしかするとLocationヘッダが含まれているからかもしれません。
499は決められたエラーではないのでブラウザが勝手に動くことはないと思います。
ただ、確認はしていませんが、Locationヘッダがあればどのようなステータスコードでもリダイレクトするかもしれません。

とりあえず、パケットキャプチャするとか、wgetやcurlなどでヘッダも含めた詳細なレスポンスを確認するとかしたらどうでしょう?
curlなら-vオプションで、wgetなら-dオプションと--max-redirect=0で、詳細なレスポンスが得られると思います。

匿名質問者

ありがとうございます
再現はできない状況で再発防止の対策をおこないたいので
499が公式には未定義のコードということがわかりましたので、499を設定している箇所を調査して進めたいと思います

2013/01/15 20:28:16

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません