У меня есть веб-сервис, который я хочу использовать в нескольких доменах. Однако я хочу ограничить сайты (домены), которые могут получить доступ к моему веб-сервису.
Например, я хочу, чтобы запрос, сделанный страницей сайта www.Site-A.com, выполнялся, а запрос от www.Site-B.com отклонялся.
Есть ли способ сделать это с помощью ASP.NET/IIS?
Ответ 1 · рейтинг 1 · AnthonyWJones
Если я правильно понял ваш вопрос, у вас есть веб-контент, на который могут ссылаться другие страницы за пределами вашего домена. Эти страницы будут загружены в браузер, после чего запросы от ссылок на этих страницах будут пытаться получить контент с вашего сайта. Это описывает ваш сценарий?
Если это так, то единственный шанс, который у вас есть, - это потребовать, чтобы запросы доставлялись с заголовком referer (что нормально, но некоторые браузеры позволяют пользователю подавить его). Затем вы можете проверить содержимое заголовка referer в своем коде, чтобы проверить, хотите ли вы продолжить выполнение запроса.
Вы можете проверить referer с помощью этого кода: -
var referer = new Uri(Request.ServerVariables("HTTP_REFERER"));
if (referer.Host.ToLower() == "www.site-a.com")
//Allow access
Осторожно
Этот метод можно использовать только неофициально, нет способа аутентифицировать заголовок referer, поэтому любой может подделать его, используя довольно простые инструменты.