没有尾部斜杠的基础乌里

4thex

如果我Uri使用UriBuilder这样创建一个

var rootUrl = new UriBuilder("http", "example.com", 50000).Uri;

随后AbsoluteUrirootUrl总是包含这样的斜线:

http://example.com:50000/

我想要的是创建一个Uri不带斜杠对象,但这似乎是不可能的。

我的解决方法是将其存储为字符串,然后执行如下操作:

var rootUrl = new UriBuilder("http", "example.com", 50000).Uri.ToString().TrimEnd('/');

我听说有人说没有尾随的斜杠,Uri是无效的。我认为那不是真的。我查看了RFC 3986,并在3.2.2节中说:

如果URI包含授权组件,则路径组件必须为空或以斜杠(“ /”)开头。

它并不表示必须在末尾加斜杠。

西罗西格诺尔

在任意URI中不需要尾部斜杠,但是它是HTTP中请求的绝对URI规范表示的一部分

注意绝对路径不能为空;如果原始URI中没有任何内容,则必须将其指定为“ /”(服务器根目录)。

为了遵守规范Uri该类以带斜杠的形式输出URI:

通常,使用通用语法授权具有空路径的URI应该标准化为路径“ /”。

无法Uri在.NET中对象上配置此行为当发送对具有空路径的URL的请求时,Web浏览器和许多HTTP客户端执行相同的重写。

如果我们想在内部将URL表示为一个Uri对象而不是一个字符串,则可以创建一个扩展方法来格式化URL,且不带斜杠,从而将该表示逻辑抽象到一个位置,而不是每次需要输出时都复制它。显示网址:

namespace Example.App.CustomExtensions 
{
    public static class UriExtensions 
    {
        public static string ToRootHttpUriString(this Uri uri) 
        {
            if (!uri.IsHttp()) 
            {
                throw new InvalidOperationException(...);
            }

            return uri.Scheme + "://" + uri.Authority;
        }

        public static bool IsHttp(this Uri uri) 
        {
            return uri.Scheme == "http" || uri.Scheme == "https";
        }
    }
}

然后:

using Example.App.CustomExtensions;
...

var rootUrl = new UriBuilder("http", "example.com", 50000).Uri; 
Console.WriteLine(rootUrl.ToRootHttpUriString()); // "http://example.com:50000"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

404 没有尾部斜杠

Firebase托管:没有尾部斜杠时重写规则失败

没有尾部斜杠的django网址不会重定向

乌里的所有特殊字符是什么?

从乌里获取路径

乌里问题

如何在没有尾部斜杠的情况下返回 location.hostname?

ASP.NET MVC路由,其值在控制器之前且没有尾部斜杠

如何在 angular 7 的 URL 中添加尾部斜杠而刷新时没有 404 问题?

htaccess 在没有 php 扩展的情况下访问的重写规则导致尾部斜杠错误

Flask 向 URL 添加尾部斜杠,没有路由匹配

从所有URL删除尾部斜杠

正则表达式以匹配没有尾部斜杠的URL,也没有文件扩展名

Apache2 Alias被忽略:尽管没有尾部斜杠和重写功能,但“文件不存在”

如果 index.html 不存在于没有尾部斜杠的目录中,则提供 index.php

如何配置 IIS 以在没有尾部斜杠的情况下提供目录并始终相对于根路径提供服务?

RESTful URI 尾部斜杠或无尾部斜杠

乌里:悬停不稳定的表情

关于Nginx中的尾部斜杠行为有些困惑

除了以文件扩展名(即 .pdf、.html、...)结尾的 URL 之外,有没有办法自动向所有 URL 添加尾部斜杠?

去除尾部斜杠的值

htaccess尾部斜杠问题

HAProxy删除尾部斜杠

尾部-f的double grep没有输出

从乌里垫目标的创建返回的意图

从乌里获取绝对路径的Android 10

htaccess重写删除尾部斜杠

.htaccess:重定向尾部斜杠

Flask路径中的尾部斜杠