2011-11-13 5 views
3

エンコードされたURLについて混乱します。エンコードされたURLが機能しない

stackoverflow.com/questions 

私が正常にページを表示することができます:私は私のブラウザを書き例えば

、。私が書くしかし

、:

stackoverflow.com%2Fquestions 

私は見ることができません。

%2Fは「/」を意味するので、なぜこれが正しく動作しないのか理解したいと思います。

私が知りたいのは、エンコードされたURLが取得されていて、エラーページを表示しないように受け取った直後にそのURLをどのようにデコードできるかわかりません。

+1

あなたの答えを読んだ後、私は完全に理解しています。私がしようとしているのは、www.domain.com?retUrl=www.anotherdomain.com%3Fparameter%3D=valueのようなクエリ文字列にURLを渡そうとしていることです。実際には、anotherdomain.comにパラメータの値を渡したいと考えています。これを達成する方法はありますか? – Mikae

答えて

9

/percent-encoding reserved charactersの1つです。 URLは、その構文を定義するためにpercent-encoding reserved charactersを使用します。これらの文字がURL内の特殊な役割で使用されていない場合にのみ、それらをエンコードする必要があります。

パーセントエンコード予約文字:

!  *  '  (  )  ;  :  @  &  =  +  $  ,  /  ?  #  [  ] 
%21  %2A  %27  %28  %29  %3B  %3A  %40  %26  %3D  %2B  %24  %2C  %2F  %3F  %23  %5B  %5D 
+0

私は今それを完全に理解しています。私がしようとしているのは、www.domainなどのクエリ文字列にURLを渡そうとしていることです。com?retUrl = www.anotherdomain.com%3Fパラメータ%3D =値。実際には、anotherdomain.comにパラメータの値を渡したいと考えています。これを達成する方法はありますか? – Mikae

+1

たとえば、 'http://www.domain.com/example /'を 'http://www.domain.com/page.php'に' http://www.domain。 com/page.php?theURL = http%3A%2F%2Fwww.example.com%2Fexample%2F'。 – Anne

+0

実際、domain.comは私がコントロールできないサービスであり、www.example.comは自分がコントロールするものです。 domain.comはブラウザをexample.comにリダイレクトします。また、私のexample.comページ(www.example.com?parameter=value)にパラメータを受け取りたいとします。だから、私はURLのエンコード/デコードを使用することを考えていたのです。どのように進めることができますか? – Mikae

5

%2Fは、のURLがエスケープされた/です。つまり、ディレクトリセパレータではなく、/を文字として扱うことを意味します。

本質的に

、それはドメインstackoverflow.com/questions、パスではなくquestionsとドメインstackoverflow.comを探しています。

1

%2Fは、パラメータに/を含めるが、ブラウザが別のディレクトリ/ルートにナビゲートしないようにする場合に書いたものです。あなたは、クエリ文字列パラメータとして渡されたファイルのパス 'ルート/サブディレクトリ' を持っていた場合

だから、あなたは、エンコードしたいと思うような:

http://www.testurl.com/page.php?path=root%2Fsubdirectory

ではなく

http://www.testurl.com/page.php?path=root/subdirectory

1

URLエンコードは、例えば、使用されています'/'のような特殊文字を含むHTMLフォームからの文字列URLパラメータをエンコードするためのものです。 "stackoverflow.com%2Fquestions"と書くのは誤りです。この場合、 '/'はURL自体の一部であり、エンコードしてはいけません。

関連する問題