web-dev-qa-db-fra.com

Get request Origin dans le contrôleur api C #

Existe-t-il un moyen de récupérer la valeur d'origine de la demande dans le contrôleur api lorsque j'appelle un point de terminaison api avec un appel ajax?

Par exemple, je fais cet appel depuis www.xyz.com:

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

}).error(function (data) {

});

Une fois du côté de l'API, comment puis-je obtenir la valeur www.xyz.com?

CORS fonctionne correctement.

12
Laziale

Ce que vous recherchez est probablement l'en-tête Origin. Tous les navigateurs modernes l'envoient si vous faites une demande interdomaine.

Dans un ApiController vous le récupérez comme ceci:

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

Vous pouvez le récupérer à partir des méthodes API via la collection actuelle d'en-têtes de requête HTTP:

  IEnumerable<string> originValues;
  Request.Headers.TryGetValue("Origin", out originValues)
6
ivamax9