、HTTPプロトコルでは、ファイルパスにエンコードされたスペースが必要ですか? HTTPプロトコルで
ファイル名にスペースがある場合requsestの最初の行は、例えば
GET /img/my house.jpg HTTP/1.1
私の質問は、ありさのように、プロトコルは、何らかの方法でエンコードされることを必要としません? (プロトコルが明確でない場合や、実際の状況は何ですか?)
、HTTPプロトコルでは、ファイルパスにエンコードされたスペースが必要ですか? HTTPプロトコルで
ファイル名にスペースがある場合requsestの最初の行は、例えば
GET /img/my house.jpg HTTP/1.1
私の質問は、ありさのように、プロトコルは、何らかの方法でエンコードされることを必要としません? (プロトコルが明確でない場合や、実際の状況は何ですか?)
これを%20としてエンコードする必要があります。ここにその理由があります。まず、RFC 2616 5.1.2 ...
リクエストライン=メソッドのSPのRequest-URI SP HTTP-バージョンCRLF
と...
今のRequest-URI = "*" |絶対値| abs_path |権限
のはRFC 1808にオーバーホップ、あなたはURLとパスの仕様にスペースがないことに注意しましょうしましょう...
URL = (absoluteURL | relativeURL) [ "#" fragment ]
absoluteURL = generic-RL | (scheme ":" *(uchar | reserved))
generic-RL = scheme ":" relativeURL
relativeURL = net_path | abs_path | rel_path
net_path = "//" net_loc [ abs_path ]
abs_path = "/" rel_path
rel_path = [ path ] [ ";" params ] [ "?" query ]
path = fsegment *("/" segment)
fsegment = 1*pchar
segment = *pchar
params = param *(";" param)
param = *(pchar | "/")
scheme = 1*(alpha | digit | "+" | "-" | ".")
net_loc = *(pchar | ";" | "?")
query = *(uchar | reserved)
fragment = *(uchar | reserved)
pchar = uchar | ":" | "@" | "&" | "="
uchar = unreserved | escape
unreserved = alpha | digit | safe | extra
escape = "%" hex hex
hex = digit | "A" | "B" | "C" | "D" | "E" | "F" |
"a" | "b" | "c" | "d" | "e" | "f"
alpha = lowalpha | hialpha
lowalpha = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" |
"j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" |
"s" | "t" | "u" | "v" | "w" | "x" | "y" | "z"
hialpha = "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" |
"J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" |
"S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z"
digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" |
"8" | "9"
safe = "$" | "-" | "_" | "." | "+"
extra = "!" | "*" | "'" | "(" | ")" | ","
national = "{" | "}" | "|" | "\" | "^" | "~" | "[" | "]" | "`"
reserved = ";" | "/" | "?" | ":" | "@" | "&" | "="
punctuation = "<" | ">" | "#" | "%" | <">
はい、それはすなわち
%20
が問題の文字の進値を表し
GET /img/my%20house.jpg HTTP/1.1
、URLエンコードする必要があります
PS already askこれはありませんでしたか?
はい。 %20
。詳細は、RFC 1738を参照してください。
HTTP URIのパスコンポーネントは「ファイルパス」ではないことに注意してください。それはすべて、リソースへの階層的なパスであり、サーバー上のファイルに対応する必要はありません。
RFC 1738は無関係です。代わりにRFC 2616(HTTP)とRFC 3986(URI)を確認してください。 –
はい。
Request-Line = Method SP Request-URI SP HTTP-Version CRLF
注空間が要求行で区切りであることを次のよう
仕様は要求ラインを定義します。
メソッド、メソッド、バージョンを定義しないと、スペースの可能性を除外しませんでした。あなたはこの場合正しいですが。 –
スペースは%20としてエンコードする必要があり、エンコードのルールはRFC3986に記載されています。あなたは通常、URLエンコーディングの世話をしているライブラリを持っていることをお勧めします。
これはすでにここに尋ねた、まさに次のとおりです。http:// stackoverflow.com/questions/4665124/space-in-url-did-browser-got-smarter-or-server/4665137#4665137 – Brad
いいえ、正確な複製はありません。 – jgauffin