質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.50%

  • Ruby on Rails

    7468questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

  • Chrome

    620questions

    Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

  • HTTP

    557questions

    HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

  • Firefox

    213questions

    Mozilla Foundationによって作られた無料、オープンソース、クロスプラットフォームなウェブブラウザ

  • Safari

    170questions

    SafariはAppleのウェブブラウザであり、Mac OS XとiOSのデフォルトのブラウザです。

httpリクエストのクエリパラメータにプロトコルのバージョンが付加される問題(rails)

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 736

tkow

score 1175

お世話になっております。

本日サーバ側で数件Webアプリケーション動作がうまくいかない事案が発生しており,原因を調査したところ,
一部端末からのリクエストにHTTP/1.1という文字列が付加されていました。
これは,うろ覚えですが,利用者が明示的にあるいはブラウザ側が付加しているバラメータだったと思うのですが,自分でブラウザを利用する際にどういう条件でこの文字列が付加されるかご存知の方いらっしゃいますでしょうか?
また,この文字列を検出した場合はサーバ側でsanitizeする方法で直そうと思っていますが,もっといい方法はあるでしょうか?
よろしくお願いいたします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • maisumakun

    2016/04/08 14:41

    実際のリクエストデータなどを、差し支えない範囲で示していただけないでしょうか。

    キャンセル

  • tkow

    2016/04/08 15:05

    ありがとうございます。 リクエストのやり方としては,jsonを文字列にして,URLで送っています。 http://hoge.com?json={key1:value1,key2:value2}HTTP/1.1 というリクエストが送られています。 正常に動作している利用者の場合は,HTTP/1.1が付加されずにリクエストが送られています。

    キャンセル

回答 2

checkベストアンサー

+1

そもそも、HTTPのGETメソッドは、GET パス HTTP/Versionという構造になっています(参考)。

おそらくは送信側のバグかと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/08 15:31

    ありがとうございます。
    空白がなんらかの原因でtrimされてパラメータに含まれてしまうということなんでしょうか。
    原因をもう少し調査してみますが,貼っていただいたリンクを読んでプロトコルの仕様を確認してみます。

    キャンセル

  • 2016/04/11 12:45 編集

    その後色々調査を進めたところ,HTTP/1.0でリクエストに限りバグが起きているようで,HTTP/1.1に対応させるために書いたコードにバグが混在している可能性が高そうであることがわかりました。
    ご回答いただきありがとうございました。

    キャンセル

+1

この辺も参考になるかもしれません。
HTTPバージョン(wiki)
RFC2616

まず、HTTPプロトコル上、1.0以降のバージョンのリクエストであれば、リクエストにHTTPバージョンを付加しなければいけません。
次にリクエストのHTTPバージョンは何を付けるべきか、ですが、これはクライアント側の対応している一番上のバージョンになります。

従って、「ブラウザを利用する際にどういう条件でこの文字列が付加されるか」というと、そのブラウザが対応している一番上のバージョンを常に付与するはずです。

maisumakunさんの回答通り、パスとHTTPバージョンの間に空白が無いだけであれば、送信者側のバグっぽいですね。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/11 12:43

    情報ありがとうございます。
    HTTP/1.0でリクエストに限りバグが起きているようで,こちらに対応するために書いたコードにバグが混在している可能性が高そうなようです。
    ご回答いただきありがとうございました。

    キャンセル

関連した質問

同じタグがついた質問を見る

  • Ruby on Rails

    7468questions

    Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

  • Chrome

    620questions

    Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

  • HTTP

    557questions

    HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

  • Firefox

    213questions

    Mozilla Foundationによって作られた無料、オープンソース、クロスプラットフォームなウェブブラウザ

  • Safari

    170questions

    SafariはAppleのウェブブラウザであり、Mac OS XとiOSのデフォルトのブラウザです。