2016-12-28 25 views
3

當我使用ajax調用某個api端點時,如何才能在api控制器中獲取請求源值?在c#api控制器中獲取請求源

比如我從www.xyz.com在進行此調用:

$http({ 
    url: 'http://myazurewebsite.azurewebsites.net/api/ValueCall/CheckForExistingValuers', 
    method: "GET", 
    params: { loanID: $scope.loanIdPopup } 
}).success(function (data) { 

}).error(function (data) { 

}); 

一旦在API方面,我怎麼能得到www.xyz.com價值?

CORS工作正常。

感謝,Laziale

+0

的可能重複http://stackoverflow.com/questions/4258217/getting-the-http-referrer-in-asp-net – Theo

+0

@Theo不是重複的。 – Laziale

+0

怎麼沒?您正在尋找引薦網址,不是? – Theo

回答

4

什麼你正在尋找的可能是源頭。如果您正在進行跨域請求,所有現代瀏覽器都會發送它。

ApiController你取它像這樣:

if (Request.Headers.Contains("Origin")) 
{ 
    var values = Request.Headers.GetValues("Origin"); 
    // Do stuff with the values... probably .FirstOrDefault() 
} 
+1

我得到這個錯誤:'' ExceptionMessage「:」找不到給定的頭文件「, 」ExceptionType「:」System.InvalidOperationException「,」我正在使用郵遞員。 – Si8

+0

然後消費者可能不會發送該標題。但是如果它是跨域的話,所有現代瀏覽器都會發送它。 – smoksnes

+0

Ahhhhh ...我使用的網址是「http:// localhost」,只是在VS中調試並運行郵遞員,也許這是爲什麼? – Si8

0

您可以通過當前的HTTP請求頭採集的API方法抓住它:

IEnumerable<string> originValues; 
Request.Headers.TryGetValues("Origin", out originValues) 
0

你有你的控制器像裏面的嘗試:

public IHttpActionResult Post() 
    { 
     //get host from where the request came 
     string host = this.Request.Headers.Host; 

     return Ok(); 


    }