HTTP 417 エラー
とある環境で"HTTP 417 エラー"が返ってきてしまいました。
Wikipediaでステータスコードの意味を調べると次のように記載されていました。
"Expectヘッダによる拡張が失敗。その拡張はレスポンスできない。またはプロキシサーバは、次に到達するサーバがレスポンスできないと判断している。具体例として、Expect:ヘッダに100-continue以外の変なものを入れた場合や、そもそもサーバが100 Continueを扱えない場合に返す。"
※引用元
"100 Continue"ってなんだろうと思い調べてみました。
"100 Continue"とはサーバーがデータの受け入れが可能かどうか判断するリクエストのようです。
"100 Continue"のリクエストが正常に通った後に、実際のリクエスト内容である"body"を送ることになります。
図で示すと次のようなイメージです。
◆"100 Continue"を使う場合。
Client ---( POST + HTTP Request Header )--> Server Client <--( HTTP/1.1 100 Continue ) --- Server Client ---( Body ) --> Server Client <--( HTTP/1.1 200 OK など ) --- Server
◆"100 Continue"を使わない場合。
Client ---( POST + HTTP Request Header + Body )--> Server Client <--( HTTP/1.1 200 OK など ) --- Server
今回の環境では、プロキシサーバーが"100 Continue"を取り扱えていなかったようですが、サーバーが取り扱っていない場合もあるようです。
現在はどうかわかりませんが、twitterは"100 Continue"を取り扱っていないという記事もありました。