首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >确定给定的url (来自字符串)是否来自我的域

确定给定的url (来自字符串)是否来自我的域
EN

Stack Overflow用户
提问于 2019-07-17 09:14:32
回答 1查看 569关注 0票数 0

我正在尝试从c#代码中检查给定的_Blank是否来自我的域,以便为外部链接添加"nofollow“和"target url”属性。

当我谈到外部链接时,我指的是我的域之外的任何链接。

默认情况下,它没有该属性。我尝试了很多东西,基本上这是我需要修复的部分:

代码语言:javascript
运行
复制
 public void PrepareLink(HtmlTag tag)
    {
        string url = tag.attributes["href"];

        if (PrepareLink != null)
        {
            if (it is from an external site???)
            {
                tag.attributes["rel"] = "nofollow";
                tag.attributes["target"] = "_blank";
            }                
        }

编辑:我尝试过的事情:

代码语言:javascript
运行
复制
                string dominioLink = new Uri(url).Host.ToLower();

                if (!dominioLink.Contains(myDomainURL))
                {
                    tag.attributes["rel"] = "nofollow";
                    tag.attributes["target"] = "_blank";
                }

它有一个问题,那就是不考虑子域

也就是说,如果创建的链接是http://www.mydomain.com.anotherfakedomain.com,它将返回true并正常工作。

我查看了每个Uri属性,但似乎没有包含基域。

我目前使用的是.NET Core2.0。

谢谢!如果您需要任何其他数据,请让我知道。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-17 10:42:12

您可以使用Uri.Host属性从URL字符串中获取域,然后将其与您自己的域进行比较。我建议使用不区分大小写的匹配。

代码语言:javascript
运行
复制
var url = tag.attributes["href"];
var uri = new Uri(url);
var match = uri.Host.Equals(myDomain, StringComparison.InvariantCultureIgnoreCase)  
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57067271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档