2016-12-06 50 views
0

我创建网络API来提供像PIN码,银行IFSC代码等服务,从为http://www.ajaxserver.com如何知道客户端的URL名称?

我所有的API是在我的网站和我所有的客户端访问使用我的网站托管我的网站命名。 网页API代码

[Route("api/GetURLName/")] 
    [HttpGet] 
    public string GetURLName(HttpRequestMessage request) 
    { 
     return HttpContext.Current.Request.Url.AbsoluteUri ; 
    } 

我的一个客户网站的名字是http://www.clientwebsite.online

客户端使用jQuery来检索像下面的代码信息。

 $('#btnTestCore').click(function() { 
     $.ajax({ 
      url: 'http://ajaxserver.com/api/GetURLName/', 
      dataType: 'json', 
      type: 'GET', 
      contentType: "application/json; charset=utf-8", 
      success: function (data) { 
       alert(data); 
      }, 
      error: function (data) { 
       alert('failed.'); 
      } 
     }); 
    }); 

输出谈到:

"http://ajaxserver.com/api/GetURLName/". 

需要输出:

"http://clientwebsite.online/api/GetURLName/" 
+0

你看到的是预期的行为,你是返回请求url(这是你的网站)。你有没有尝试RequestReferrer – Shyju

+1

我调整了网址,以避免看起来垃圾邮件 –

+0

无法使用RequestReferrer,显示运行时错误... –

回答

0

至于Ajax请求都知道的服务器; “网站”本身就是这样,所以http://www.ajaxserver.com。你可能试图看看引荐,但是...这是不可靠的所有浏览器和协议。

所以,你有两个选择:

  • 在客户端API 告诉你调用网站 - 注意,这可能平凡的客户端
  • 做一些不平凡的代理(ETC)是伪造配置使得AJAX服务器的站点上的客户端域响应

注意http://clientwebsite.online/api/GetURLName/实际的URL,并且不打算本身来自任何地方。

+0

我无法理解你的答案。你能写一些行来获得我的输出吗? –

+0

@SujeetKumarSingh“你能为我写几行文字来获得我的输出吗?”不,因为你想要的是基于错误的前提;你想要的**不仅仅是改变几行**的情况。它涉及改变你的方法。我已经介绍了两种不同的选择。 –

+0

我知道,我走错了路,但我可以坦率地说,\t 我无法理解你的上述方法... –

1

你可以输出追加到AJAX请求:

$('#btnTestCore').click(function() { 
     var urlname = encodeURI("http://clientwebsite.online/api/GetURLName/") 
     $.ajax({ 
      url: 'http://ajaxserver.com/api/GetURLName?urlname=' + urlname, 
      dataType: 'json', 
      type: 'GET', 
      contentType: "application/json; charset=utf-8", 
      success: function (data) { 
       alert(data); 
      }, 
      error: function (data) { 
       alert('failed.'); 
      } 
     }); 
    }); 

你会的话,当然要读的是查询字符串在你的WebAPI代码

相关问题