5

サルヴェテ!私は、URLエンコードの特定の方法がリンクを壊すことを発見しました。レコードの場合、%2fスラッシュ文字を表します。/

さて、これを考えてみましょう:元のリンク:http://dottech.org/95285/this-is-the-pacific-barreleye-a-fish-with-a-transparent-head-amazing-photo-of-the-day

javascript(encodeURIComponent)urlencodedリンク:http://dottech.org%2f95285%2fthis-is-the-pacific-barreleye-a-fish-with-a-transparent-head-amazing-photo-of-the-day

これで、エンコードされたリンクをブラウザのアドレスバーに貼り付けると、壊れます(Firefox、Chrome、IE)。

ただし、最初のスラッシュをurlエンコードしない場合は、完全に機能します。http://dottech.org/95285%2fthis-is-the-pacific-barreleye-a-fish-with-a-transparent-head-amazing-photo-of-the-day

なんで?

4

1 に答える 1

5

/予約文字です。と同等ではありません%2f。定義された意味のないスラッシュが必要な場合は、エンコードされた形式を使用します。

RFC 3986:「予約文字」を参照してください:

予約文字の目的は、URI内の他のデータと区別できる一連の区切り文字を提供することです。予約文字を対応するパーセントエンコードされたオクテットに置き換える点が異なるURIは同等ではありません。予約文字をパーセントエンコードするか、予約文字に対応するパーセントエンコードされたオクテットをデコードすると、ほとんどのアプリケーションでURIがどのように解釈されるかが変わります。

2番目のスラッシュに予約文字を使用しない場合でもメンションURLが機能する理由/:CMSはURL内のID部分を検索するだけです。したがって、URLに必要なものを追加できます。たとえば、次のように機能するはずです。

http://dottech.org/95285/hey-this-URL-got-featured-at-stackoverflow

(しかし、それはまだそうである/%2f、彼らの場合でなければならないようです。)

ウィキペディアの記事で試してみると、フロントページにリダイレクトされます。

http://en.wikipedia.org/wiki%2fStack_Overflow
于 2013-02-02T03:13:51.260 に答える