2

このような着信リクエストがあります。これは3番目の部分からのものであるため、手に負えません。

/external/endpoint?PRN=1234567&INPUT=1111;ABCDEF&CUSTOMER=555454545

これでリクエストパラメータを印刷すると、request.GETこれが得られます。INPUTパラメータは2つの異なるものに切り刻まれます。

Incoming dict: {u'INPUT': [u'1111'], u'ABCDEF': [u''],u'CUSTOMER': [u'555454545'], u'PRN': [u'1234567']}

自分でリクエストURLをハックすることもできましたが、リクエストオブジェクトのデフォルトの動作に驚いていました。パラメータを「&」で割っただけだと思いました。他の誰かがこれを見たか、これが起こることになっているのか知っていますか?

4

1 に答える 1

1

W3によると、「;」実際には、URI の優先パラメーター区切り文字です。

http://www.w3.org/TR/html4/appendix/notes.html#hB.2.2

B.2.2 URI属性値のアンパサンド

フォームが送信されたときに構築される URI は、アンカー スタイルのリンクとして使用できます (たとえば、A 要素の href 属性)。残念ながら、フォーム フィールドを区切るために「&」文字を使用すると、文字エンティティ参照を区切るために SGML 属性値での使用と相互作用します。たとえば、URIhttp://host/?x=1&y=2 をリンク URI として使用するには、<A href="http://host/?x=1&#38;y=2">または と記述する必要があります<A href="http://host/?x=1&amp;y=2">

HTTP サーバーの実装者、特に CGI の実装者は、";" の使用をサポートすることをお勧めします。"&" の代わりに、このように "&" 文字をエスケープする手間を省きます。

于 2013-03-06T00:01:46.810 に答える