- PR -

HTTP POST 記述は違反ですか?

1
投稿者投稿内容
夜の技術者
常連さん
会議室デビュー日: 2004/07/22
投稿数: 30
投稿日時: 2004-11-01 01:36
このHTTP POST記述は違反ですか?
ご存知の方はご教示ください。

HTTP POST url文字列 HTTP/1.1 HTTP/1.1

なお、このPOSTはプロキシサーバから送信されています。

よろしくお願いいたします。

[ メッセージ編集済み 編集者: 夜の技術者 編集日時 2004-11-01 01:37 ]
未記入
ぬし
会議室デビュー日: 2004/09/17
投稿数: 667
投稿日時: 2004-11-01 06:28
引用:

HTTP POST url文字列 HTTP/1.1 HTTP/1.1



RFC2616にはまったく沿ってないね。まず、サーバーに OPTIONS メソッドを投げて、
その拡張メソッド HTTP というものがサーバーで定義されているか確認する。
次にリクエストURI「POST url文字列 HTTP/1.1」には空白文字を含むことは
できないので、URLエンコードでもしとく。「POST%20url文字列%20HTTP/1.1」とか。
あとは HTTP バージョンを付加する。

よって正解は、HTTP POST%20url文字列%20HTTP/1.1 HTTP/1.1 となる。

引用:

なお、このPOSTはプロキシサーバから送信されています。


ん? POSTメソッドならリクエストラインは POST リクエストURI HTTP/1.1 だよ。
先頭の HTTP は不要だし。末尾の HTTP バージョンもふたつは要らない。
夜の技術者
常連さん
会議室デビュー日: 2004/07/22
投稿数: 30
投稿日時: 2004-11-01 10:17
お手数をおかけいたします。
キャプチャしたデータは以下の通りでした。

HTTP POST /xxx/servlet/xxxx.xxxx HTTP/1.1 HTTP/1.1

頂いた内容からこのようなPOSTメソッドを発行するプロキシが
仕様違反ということでしょうか。
ご教示いただけますよう御願い申し上げます。
未記入
ぬし
会議室デビュー日: 2004/09/17
投稿数: 667
投稿日時: 2004-11-01 12:52
いや、プロキシが悪いとは言いきれない。RFC ではプロキシがリクエストラインの妥当性を確認しなければならない、という記述はないので、クライアントが HTTP POST ... と間違ったリクエストを発行していて、それを転送しているだけであれば、プロキシは悪くないと言える。

それと、規格(RFC)に沿ってるだけじゃ HTTP は動かないと思っていたほうがいいよ。世の中にはレスポンスヘッダ終端に LFLF を送ってくる馬鹿サーバーがあったり、HTTP/1.1 を名乗っているのに Host ヘッダがないリクエストを投げてくるクライアントなんかもいるので、ある程度は大目に見てあげる実装が必要。

[ メッセージ編集済み 編集者: 未記入 編集日時 2004-11-01 12:54 ]
夜の技術者
常連さん
会議室デビュー日: 2004/07/22
投稿数: 30
投稿日時: 2004-11-02 01:37
なるほどです。
実は、あるプロキシを経由すると
HTTP POST /xxx/servlet/xxxx.xxxx HTTP/1.1 HTTP/1.1
で負荷分散装置まで到着し、負荷分散装置で
HTTP POST /xxx/servlet/xxxx.xxxx HTTP/1.1 HTTP/1.0
へダウングレード
WEBサーバで
HTTP/1.1 200 OK
で負荷分散装置へもどし、
負荷分散装置が
HTTP/1.0 200 OK
でプロキシに戻している現象があり、
あるxmlデータがWEBサーバでHTTP/1.1形式を
負荷分散装置でヘッダだけHTTP/1.0にしているため
パーサエラーとなっていました。
そのため、
HTTP POST /xxx/servlet/xxxx.xxxx HTTP/1.1 HTTP/1.1
が正しいのかなあと考えた次第です。
1

スキルアップ/キャリアアップ(JOB@IT)