HTTPのPOSTメソッドでリクエストを投げる際にURLエンコードする必要性はあるのでしょうか。
URLエンコードというのは、もともとヘッダ部のURL部分に2バイト文字や制御文字と紛らわしい文字が入るのを防止するためのものであり、
BODY部には不要ではないかと思いました。
例えばMIME TYPEにapplication/x-www-form-urlencodedが指定されている場合文字列はエンコードして送信されますが、
application/jsonを指定する場合などは、手動でURLエンコーディングするべきでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
まず結論から申し上げますと、
- URLエンコードは求められていません。
- ただしもちろん、JSONならばJSONとしての適切なエスケープ(例えば文字列フィールド中の引用符など)は別途必要です。
まず、URLエンコードの不必要な理由。HTTPは最初からバイナリデータを送受信できるように規格で決められています。HTTPの規格書 https://www.ietf.org/rfc/rfc2616.txt の4.4節
message-body = entity-body | <entity-body encoded as per Transfer-Encoding>
7.2節
entity-body = *OCTET
に定義されているとおりメッセージボディは、Transfer-Encodingが指定されていない限り生のバイナリの配列であるとされています。
さてではコンテントタイプがapplication/x-www-form-urlencodedのときにURLエンコードが必要となる理由。これはkey=value形式のデータを&区切りで並べる以上、value部に'&'が入っているとvalueの一部なのか区切り文字なのか見分けがつかないからエスケープする必要があるという、HTTPよりは高レベルのアプリケーション上の要求でとなります。
投稿2015/10/20 12:04
総合スコア5570
0
エンコードの必要はないです。
URLエンコードとは、リクエストURLに対するエンコードです。
最近はあまり意識する必要は無いです。
実際問題が起こってから対処する形で良いと思います。
投稿2015/10/13 18:34
総合スコア1124
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/10/13 23:30
2015/10/20 06:51
2015/10/20 12:11
2015/10/20 12:23
2015/10/20 12:26
2015/10/21 01:08
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/10/21 10:29