【发布时间】:2010-09-12 20:10:57
【问题描述】:
我有一个基本网址:
http://my.server.com/folder/directory/sample
还有一个相对的:
../../other/path
如何从中获取绝对 URL?使用字符串操作非常简单,但我想以安全的方式执行此操作,使用 Uri 类或类似的东西。
它适用于标准的 C# 应用程序,而不是 ASP.NET 应用程序。
【问题讨论】:
我有一个基本网址:
http://my.server.com/folder/directory/sample
还有一个相对的:
../../other/path
如何从中获取绝对 URL?使用字符串操作非常简单,但我想以安全的方式执行此操作,使用 Uri 类或类似的东西。
它适用于标准的 C# 应用程序,而不是 ASP.NET 应用程序。
【问题讨论】:
有些人可能正在寻找允许在调试时“即时”转换 url 的 Javascript 解决方案
var absoluteUrl = function(href) {
var link = document.createElement("a");
link.href = href;
return link.href;
}
像这样使用:
absoluteUrl("http://google.com")
http://google.com/
或
absoluteUrl("../../absolute")
http://stackoverflow.com/absolute
【讨论】:
var baseUri = new Uri("http://my.server.com/folder/directory/sample");
var absoluteUri = new Uri(baseUri,"../../other/path");
或
Uri uri;
if ( Uri.TryCreate("http://base/","../relative", out uri) ) doSomething(uri);
【讨论】:
new Uri 解码 html 实体,如果这有所不同,这将导致 URL 不正确。例如我有一个页面,比如说hello%2Fworld.html 页面。将其设为绝对后,我得到hello/world.html,这当然是不正确的。
"http://my.server.com/folder/directory/sample/" 作为基本 URI。