2011-01-03 2 views
4

私は、これらの文字がURL内の特定の予約文字の背後にある根拠は何ですか?

#%<>?\/*+|:" 

私はこれらがコード化されて気づくすべて違法で気づく(%NNが進値であるNN)が、問題なく置き換える

$,;=& @ 

(あるスペースに注意することができ通常は+とコード化されています(ただし、%20でもよい))

#%?/+私は理解します。しかし、次のキャラクターは何をしていますか? <>\*|":

注::はドメイン部分(そのポート)で@がログインであることを理解していますが、最初の/理由は後になります:違法ですか? (@イマイチ)

答えて

3

RFC 2396 (Uniform Resource Identifiers URI: Generic Syntax)は言う:

多くのURIのコンポーネントからなるかによって区切られ、特定の の特殊文字が含まれています。 URIコンポーネント内での使用が予約済み の目的に限定されているため、これらの文字は「予約済み」と呼ばれます。

reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | 
       "$" | "," 

2.4.3。除外されたUS-ASCII文字

彼らはしばしば テキスト文書やプロトコルフィールドにおけるURIの周りの区切り文字として使用されているので、文字が を除外されているアングルブラケット「<」と「>」と二重引用符( ")ザそれはエスケープ文字の符号化に使用される ので、URIにフラグメント識別子からURIを区切るため 参照(セクション4)を使用しているため、文字「#」は を除外される。パーセント文字「%」は除外される。

delims  = "<" | ">" | "#" | "%" | <"> 

ゲートウェイおよびその他のトランスポート エージェントが時々このような文字を変更することが知られているか、または区切り文字として が使用されているため、その他の文字は除外されます。

unwise  = "{" | "}" | "|" | "\" | "^" | "[" | "]" | "`" 

私はあなたが言及したことすべてをカバーだと思います。星 "*"は予約されておらず、使用することができます。 http://en.wikipedia.org/wiki/ *

+0

ええと、私が '*'を私のページに置くと、「Bad Request」というエラーが出ます。それはasp.netのものでなければなりません –

0

私はこれについてはわかりませんが、シェル環境にURLを入力しようとするとURLが不必要に別の部分に分割されないように予約されている可能性がありますか?例えば、私は、これは、それが間違ったURL http://www.stackoverflow.com/thisを取得しようと持っその後、thatと呼ばれるファイルにそれを書き込み、それが当たったときに通訳をトリップして、コマンドプロンプトをつまずかかもしれない

curl http://www.stackoverflow.com/this>that > myFile.txt 

を実行しようと想像します第2の>。この説明は、あなたがリストしたすべての文字(それらはすべてシェル環境内の何かを意味します)を考慮していますが、なぜそれが可能かという私の最初の推測です。

+0

シンプルなカウンターは 'curl http://foo.bar.com; rm yikes' ;-)ですが –

関連する問題