作者kerash (烽火連天依山盡)
看板Web_Design
標題Re: [問題] 相對路徑....
時間Mon Mar 19 12:28:12 2012
※ 引述《qayqay (oh my god)》之銘言:
: http://maxtellyou.blogspot.com/2012/03/blog-post.html
: 網址裡的相對路徑 ..../../ = ./ 但 ../..../ 不等於 ..../../
: .../../ = ..../../
: ※ 引述《qayqay (oh my god)》之銘言:
: : 例
: : http://A/B/C/index.asp
: : 其中html 有
: : <img src="../images/space.gif" alt="" />
: : 這個比較沒問題 瀏覽器解出來 是http://A/B/images/space.gif
: : <img alt="*" src="../..../../df_sys/df_img/arr.gif" />
: : 瀏覽器解出來 是http://A/B/df_sys/df_img/arr.gif
: : WHY?
ref:
http://tools.ietf.org/html/rfc3986#page-33
FRC3986 page 33-34
主要看第 34 頁的 merge path 過程
example:
1 :
/a/b/c/./../../g
2E:
/a /b/c/./../../g
2E:
/a/b /c/./../../g
2E:
/a/b/c /./../../g
2B:
/a/b/c /../../g
2C:
/a/b /../g
2C:
/a /g
2E:
/a/g
在處理 dot 的過程就是 remove dot segments
而在這過程中主要移除的有 .(單點) 跟 ..(雙點)
在 5.2.4 中的 處理第二步是針對 dot 做改變路徑的動作
所以以 blog 中的例子來說
假設目前網址為
www.sample.com/www/image/show.html
所以資料夾路徑為
www.sample.com/www/image/
實際圖片路徑則為
www.sample.com/www/test2.jpg
那第一個
<img src="../test2.jpg">
會先跳回上一頁,再找到test2.jpg
output buf input buf
----------------------------------------------
>>
../test2.jpg(跳回上一層)
>>
www.sample.com/www /test2.jpg (找 test2.jpg)
>>
www.sample.com/www/test2.jpg
而第二個例子會找不到的原因是實際網址會變成
output buf input buf
----------------------------------------------
>>
../../..../test2.jpg(往上一層)
>>
www.sample.com/www /../..../test2.jpg(再往上一層)
>>
www.sample.com /..../test2.jpg (前往....資料夾)
>>
www.sample.com/.... /test2.jpg (找 test.jpg)
>>
www.sample.com/..../test2.jpg
而第三第四網址則是如下
output buf input buf
----------------------------------------------
>>
..../../../test2.jpg
>>
www.sample.com/www/image/.... /../../test2.jpg
>>
www.sample.com/www/image /../test2.jpg
>>
www.sample.com/www /test2.jpg
>>
www.sample.com/www/test2.jpg
output buf input buf
----------------------------------------------
>>
../..../../test2.jpg (往上一層)
>>
www.sample.com/www /..../../test2.jpg (找....資料夾)
>>
www.sample.com/www/.... /../test2.jpg (往上一層)
>>
www.sample.com/www /test2.jpg (找test.jpg)
>>
www.sample.com/www/test2.jpg
因此如果按照這種規則下去跑
如果你的 dot 想寫超過四個也沒問題
ex:
<img src="../.....././../..../././../test2.jpg" />
這樣應該也是可以找到正確的圖片~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.34.30.6
→ kerash:因為只針對 . 跟 ..,所以除了這兩個以外的都會當完整路徑 03/19 12:29
→ kerash:當然除了有 # 或 ? 等的字元出現以外(這就要繼續參考RFC了) 03/19 12:29
推 LaPass:我被一大串點搞得好混亂... orz 03/19 13:05
→ kerash:拍謝Orz ... 現在上班沒辦法一直看 PTT 編色 03/19 13:13
→ kerash:不過可以自己看 ref 就大概知道怎麼運做的了 03/19 13:13
*改小錯誤
推 qayqay:好像有感覺了XD... 03/19 14:07
上色完畢Orz 希望沒錯,不太會上
※ 編輯: kerash 來自: 114.34.30.6 (03/19 14:21)
推 qayqay:感恩!! 03/19 14:15
推 no1kk:很詳細! 03/19 15:24