HTTP 100-continue

HTTP 100-continue とは

POST 時にサーバがデータを受け入れ可能か確認するための一時応答。
クライアント→サーバに送る HTTP リクエストヘッダ に Except: 100-continue が含まれていて、なおかつサーバが対応していれば使用可能。
その場合、クライアントはまず POST で Except: 100-continue 入りのリクエストヘッダを送り、100 応答が返ってきてからボディを送ることになる。

100 を使った場合は次のようなシーケンスになる

Client ---( POST + HTTP Request Header )--> Server
Client <--( HTTP/1.1 100 Continue )     --- Server
Client ---( Body )                      --> Server
Client <--( HTTP/1.1 200 OK など )      --- Server

使わない場合はこう

Client ---( POST + HTTP Request Header + Body )--> Server
Client <--( HTTP/1.1 200 OK など )             --- Server

サーバが対応していなければ 417 Expectation Failed のようなエラーが返る。

で、

Android やら .net framework のライブラリがデフォルトで 100 を使う設定な一方、Twitter が対応していなかったのでこれに引っかかった人多数。
Twitter 相手に POST するときは無効にしておきましょう。

PHP http://www.escafrace.co.jp/blog/09/10/16/1008
C# http://d.hatena.ne.jp/nojima718/20100129/1264792636
Android http://togetter.com/li/22794