【问题标题】:How to know which domain send request using JS to my C# action如何知道哪个域使用 JS 向我的 C# 操作发送请求
【发布时间】:2016-01-12 06:50:16
【问题描述】:

我需要知道哪个域向我的 C# 操作(MVC)发送请求, 我得到请求并返回 JS 代码,

例如: 有人把这段代码放在了网站(http://www.ClientExampleSite.com/):

<script src="http://www.MyExampleSite.com/GetDomin /GetDomin" type="text/javascript"></script>

我需要返回此代码:

Var Domin = 'www.ClientExampleSite.com';

问题是 UrlReferrer 在这种情况下不起作用。

谢谢

编辑: 最后我想做的是阻止来自未知域的请求。

【问题讨论】:

  • Request.UrlReferrer
  • UrlReferrer 为空,如示例中从 JS 发送请求。

标签: javascript c# asp.net-mvc http-referer


【解决方案1】:

你可以试试这个:

Uri myUri = new Uri("http://www.ClientExampleSite.com/");   
string domain = myUri.Host;

参考Uri.Host Property

获取此实例的宿主组件。

或者你可以试试这个:

var domain =   HttpContext.Current.Request.Url.Host;

获取客户端域名

string clientDomain = string.Empty;
clientDomain = context.Request.UrlReferrer.Host;

【讨论】:

  • 它不起作用,我得到的是我的域(www.MyExampleSite.com)而不是客户端域(www.ClientExampleSite.com)
  • @dolevdolev:- 更新了我的答案。请检查。
  • UrlReferrer 不适用于示例中的请求,仅适用于常规请求。
【解决方案2】:

你可以使用,

var domainName = System.Web.HttpContext.Current.Request.Url.Authority;

或者你可以试试,

var theProvider = (IServiceProvider)HttpContext;
var theWorker = (HttpWorkerRequest)theProvider.GetService(typeof(HttpWorkerRequest));
string theReferer = theWorker.GetKnownRequestHeader(HttpWorkerRequest.HeaderReferer);  

更新: 根据您的评论,您可以从代码下方的 IP 地址获取客户端域名

        var clientIP = (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]==null) ? System.Web.HttpContext.Current.Request.UserHostAddress:
                           System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
        IPAddress addr = IPAddress.Parse(clientIP);
        IPHostEntry entry = Dns.GetHostEntry(addr);
        var clientDomainName = entry.HostName;

【讨论】:

  • 我得到了我的域名,网址是我的网址,我需要知道是谁发送了请求而不是请求的网址。
  • “谁发送请求”是什么意思?客户端机器的IP地址?如果您从 JS 调用操作方法控制器,则可以使用 window.location.href JS 函数传递当前浏览器域名
  • 我的意思是我从中获取请求的站点域,我不能使用 JS 来执行此操作,js 在客户端,我只有在服务器端有控制权。我编辑了我的帖子,最后我想做的是阻止来自未知域的请求。
  • 告诉我它能否解决您的问题?
猜你喜欢
  • 2020-11-28
  • 1970-01-01
  • 2019-12-21
  • 2014-10-14
  • 2012-11-11
  • 1970-01-01
  • 2015-05-22
  • 2011-10-29
  • 2021-06-07
相关资源
最近更新 更多