[英]C#/Razor If referrer equals or contains
我試圖找出在 C# 中獲取引用 URL 以及它是否包含或等於某個 URL 的最佳方法。
編碼:
Uri referrer = HttpContext.Current.Request.UrlReferrer;
<p>URI referrer is: @referrer</p>
<p>Full page URL is: @fullUrl</p>
if (referrer != null && referrer.Contains("mysite.com")) // this doesn't work - referrer doesn't have .Contains()
{
<p>Allowed</p>
} else {
<p>Not Allowed</p>
}
關於如何查看引用者是否包含或等於某個字符串或 URL 的任何想法?
嘗試使用referrer.Host
。 但是,我不確定在剃須刀中使用這種方法是否是最佳解決方案。 可能在基本控制器中使用實現會更好。
HttpContext.Current.Request.UrlReferrer返回一個 URI 類型的對象。 如果您需要將整個 url 作為字符串訪問,您可以在此對象上使用AbsoluteUri 。
請注意 string.Contains 區分大小寫
Uri
是一個對象而不是一個 string ,因此您不能將.Contains()
與它一起使用。
一種方法是從Uri
對象中提取主機,然后(因為它是一個字符串),使用Contains()
執行檢查Contains()
您可以使用更多屬性)。
示例代碼:
Uri referrer = HttpContext.Current.Request.UrlReferrer;
<p>URI referrer is: @referrer</p>
<p>Full page URL is: @fullUrl</p>
if (referrer != null && referrer.Host.Contains("mysite.com")) // Host is a string and has the Contains method
{
<p>Allowed</p>
} else {
<p>Not Allowed</p>
}
示例小提琴: fiddle 。
請注意,檢查引薦來源網址可能不是您問題的最佳解決方案,因為它是可以修改的。 請檢查文檔。
另外,請考慮Contains()
區分大小寫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.