C # / Razor Если реферер равен или содержит - PullRequest
0 голосов
/ 28 марта 2020

Я пытаюсь выяснить, как лучше всего в 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?

Ответы [ 3 ]

0 голосов
/ 28 марта 2020

HttpContext.Current.Request.UrlReferrer возвращает объект типа URI. если вам нужен весь URL-адрес в виде строки, вы можете использовать AbsoluteUri для этого объекта.

Обратите внимание, что string.Contains чувствителен к регистру

0 голосов
/ 28 марта 2020

Uri - это объект, а не строка , поэтому вы не можете использовать .Contains() с ним.

Подход заключается в извлечении хоста из объекта Uri а затем (так как это строка) выполните проверку с помощью 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: fiddle .

Обратите внимание, что проверка реферера не может быть лучшим решением для вашей проблемы, поскольку ее можно изменить. Пожалуйста, проверьте документы .

Кроме того, учтите, что Contains() чувствителен к регистру.

0 голосов
/ 28 марта 2020

Попробуйте использовать referrer.Host. Однако я не уверен, что использование этого подхода в бритве является лучшим решением или нет. Может быть, лучше использовать реализацию в базовом контроллере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...