2

ユーザー名にスラッシュが含まれているユーザーがいます。/user/usernameユーザー名に問題がある場合でも、簡単な URL を提供したいと考えています。すなわち/user/xXx/superboy

クライアント側のルーティングを使用していますが、ワイルドカードのサポートはないと思います。これを修正する明白な方法の 1 つは、ユーザー名をエンコードすることです。href="/user/xXx%2Fsuperboy". しかし、ブラウザはリンクに移動するときに自動的に URL をデコードし、ルーターは結局一致しません。ブラウザが自動的に URL をデコードしないようにする方法や、問題を解決する他の方法 (おそらく別のデコード スキームですか?) はありますか? ありがとう。

ルーティングにangular ui-routerでangularjsを使用しています。

4

1 に答える 1

2

パート 1. URI
の自動デコードは、一度解釈されてから解釈が渡される (再解釈される) など、多くの状況で遭遇する可能性があります。

パート 2. URI
のパスでは、は特別な意味を持つため、ファイルまたはディレクトリの名前として使用することはできません。これは、パスへの実際のパスではないものをマッピングしている場合、予期しない文字が問題を引き起こす可能性があることを意味します。これを解決するには、文字をエンコードする必要があります。/

ユーザー名をURIにマップする場合は、これが発生する可能性があることを考慮する必要があるため、これを可能にする方法でエンコードする必要があります。あなたの質問から、これは一度発生するように見えるため、「実際の URI パス」ではないURIの部分を二重にエンコードする必要があります。

また、これがどれほど信頼できるか、そしてそれが賢明かどうかを説明できるかもしれません

いつも同じように使っていれば、信頼できるはずです。推奨されるのは、このパスではなく、クエリ部分を使用する方がはるかに優れていることです。は有効なURIであり、クエリ文字列を簡単に取得できます ( first の後のすべて、または組み込みメソッド)。注意しなければならない唯一の文字はで、これもまた特別な意味を持っています。href="/user?xXx/superboy"?#

于 2013-06-10T07:19:55.963 に答える