3

POSTフォームパラメータとして渡す文字列(URLなど)をエンコードする必要がありますか?

つまり、フォームパラメータの1つとして、必要なURLをWebアプリケーション(Ruby on Rails)に渡したいと思います。では、URL / URIにエンコードする必要のある潜在的な文字はありますか?それとも、レールはとにかくこれを処理しますか?

4

3 に答える 3

3

POST フォーム パラメータとして渡す文字列 (URL など) をエンコードする必要がありますか?

それは、POST リクエストの作成/送信に何を使用しているかによって異なります。リクエスト本文を自分で直接作成している場合は、各パラメーターを URL エンコードする必要があります。

POST / HTTP/1.1
Content-Type: application/x-www-form-urlencoded

foo=bar&url=http://www.example.com/url?innerparameter1=1&innerparameter2=2

これは良くありません:innerparameter2実際には、外側のフォームでエンコードされた文字列のパラメーターです。次のようなエンコーディングが必要です。

foo=bar&url=http%3A//www.example.com/url%3Finnerparameter1%3D1%26innerparameter2%3D2

ただし、より高いレベルのものを使用して POST 要求を作成し、パラメーター文字列の何らかのマッピングを渡す場合は、そのコンポーネントが URL エンコードを処理することを期待します。

コード?

于 2009-09-30T23:51:00.440 に答える
1

ボビンスが言及しているように、URL パラメーターとして渡すデータはすべてエンコードする必要があります。多くの場合、使用しているライブラリが何であれ、これを処理します。これは、すべての HTTP リクエストに適用されます。

たとえば、API にはエンドポイントがありますGET /sites/:name。cURL を使用すると、次のようになります。

curl http://example.com/sites/google%2Ecom

URI.encodeRuby/Rails では、とを使用できますURI.decode

>> URI.encode('google.com', /\W/)
"google%2Ecom"
>> URI.decode('google%2Ecom')
"google.com"
于 2015-02-11T14:49:27.897 に答える
0

一般的に、プログラムまたはユーザー入力データを HTML ページに出力する場合は、HTML 用にエンコードする必要があります。多くの場合、URL には & 文字が含まれており、ブラウザーが問題なく処理しているように見えても、エンコードする必要があることに注意してください。

私は Ruby の専門家ではないので、Ruby でそれがどのように行われるのかわかりませんし、Ruby on Rails でそれができるかどうかもわかりません (それには少し驚かれるかもしれませんが)。私が提案するガイドラインは言語固有のものではありません。

于 2009-09-30T23:36:09.517 に答える