用户可以选择输入持久保存到数据库的超链接,然后再将其呈现到Razor模板。但是,如果用户未指定http://
,则该链接格式错误;例如www.test.com
呈现为http://ourdomain.com/www.test.com
。超链接缺少相对于网站的http://前缀呈现而不是外部链接
我们该如何处理?
用户可以选择输入持久保存到数据库的超链接,然后再将其呈现到Razor模板。但是,如果用户未指定http://
,则该链接格式错误;例如www.test.com
呈现为http://ourdomain.com/www.test.com
。超链接缺少相对于网站的http://前缀呈现而不是外部链接
我们该如何处理?
要做的最好的事情是在将每个超链接保存在数据库中之前运行正则表达式。如果它没有http://
或https://
那么我会在前面加上http://
。所有https网站都会将http重定向到https,但大多数不支持https的网站都不会将https重定向到http。
可能正则表达式的一个例子是:
^(http|https)://
你要小心,只有在情况下这些值在URL参数中使用的字符串的验证开始更换http://
或https://
这就是
谢谢@约翰福利 – markau
你是如何渲染链接? – NightOwl888
此行为是设计使然;这是一个看起来像域名的相对路径 – SLaks
@ NightOwl888使用TinyMCE获取原始HTML,对黑名单进行消毒,并坚持到数据库。然后在Razor中只显示为纯文本。 – markau