Dim x AS New URI("http://www.example.com/test//test.asp")
Dim rel AS New URI("http://www.example.com/xxx/xxx.asp")
Console.Writeline(x.MakeRelativeUri(rel).Tostring())
正常工作在這裏的輸出是:正火URI,使其與MakeRelativeUri
../../xxx/xxx.asp
這看起來是正確的,幾乎所有的Web服務器將處理以下兩個爲同一請求:
http://www.example.com/test//test.asp
http://www.example.com/test/test.asp
解決這個問題的最好方法是有沒有API來做到這一點,或者手動創建一個新的URI並刪除路徑中的所有//?
該代碼是非常粗略的黑客,因爲它不會在幾種情況下工作,最明顯的是http://example.com/test///xxx其次,即使它不能很好地編碼,這是一個仍然有效的URL:http://example.com/?bla=//Whatup – 2011-11-14 23:58:02
Dr.Evil:一個有效的URL在很大程度上取決於Web服務器對它的解釋,以及它在解析URL時決定的強大程度。由於框架並不像您想要的那樣進行所有清理,因此您可以自己創建一個「makerelativeurl」函數,以適當地檢查和清理斜線。你應該遵循RFC,還是處理URL明顯錯誤的情況? 。) – 2011-11-16 18:29:15