簡體   English   中英

C#/Razor 如果引用者等於或包含

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM