用戶可以選擇輸入持久保存到數據庫的超鏈接,然後再將其呈現到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