it-swarm-ja.tech

URLをURLパラメータとして渡す推奨される方法は何ですか?

&url='+encodeURIComponent(url);を使用してブラウザーからサーバーにURLを渡すと、URLがエンコードされますが、サーバーでデコードされると、urlのパラメーターは単一のurlパラメーターの一部としてではなく、別個のパラメーターとして解釈されます。

Urlをurlパラメーターとして渡す推奨される方法は何ですか?

45
Nir

encodeURIComponent()は動作するはずです。例えば、

'&url=' + encodeURIComponent("http://a.com/?q=query&n=10")

生産する

"&url=http%3A%2F%2Fa.com%2F%3Fq%3Dquery%26n%3D10"

(値に&または?がありません)。サーバーがこのURLを取得すると、それをデコードして元のURLを取得できるはずです。

param["url"] = "http://a.com/?q=query&n=10"

使用しているサーバー(例:Rails、Djangoなど)はわかりませんが、通常のシステムでは「そのまま」動作するはずです。

73
Dustin Boswell

「&url =」+ encodeURIComponent(url);を使用ブラウザからサーバーにURLを渡すには、URLをエンコードします

はい、それはあなたがすべきことです。 encodeURIComponentは、クエリ文字列の一部を入れるためのテキスト値をエンコードする正しい方法です。

ただし、サーバーでデコードされると、urlのパラメーターは個別のパラメーターとして解釈され、単一のurlパラメーターの一部としては解釈されません。

その後、サーバーは実際に非常に壊れています。それが本当に起こっているのであれば、サーバー側で修正する必要があります。

コード?

4
bobince