2016-12-06 2 views
0

Ich habe Web-api erstellt Service wie Pin-Code zur Verfügung zu stellen, Bank IFSC-Code und so weiter, von meiner Website namens als http://www.ajaxserver.comWie kann ich den Client-URL-Namen kennen?

Meine alle api auf meiner Seite und meint all Client-Zugriff über meine Website gehostet werden. web api-Code ist

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

Einer meiner Klienten Website-Name ist http://www.clientwebsite.online

Client jquery Informationen wie unten Code zum Abrufen verwendet wird.

 $('#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.'); 
      } 
     }); 
    }); 

Ausgang kommt:

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

Output benötigen:

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

, was Sie sehen, ist das erwartete Verhalten, wie Sie sind Zurückgeben der Request-URL (welche Ihre Site ist). Haben Sie versucht, RequestReferrer – Shyju

+1

Ich habe die URLs optimiert, um die Post zu vermeiden spamy –

+0

Kann RequestReferrer nicht verwenden, Laufzeitfehler angezeigt ... –

Antwort

0

Soweit dem Server der Ajax-Anforderung kennt; die "Seite" ist selbst, also http://www.ajaxserver.com. Sie könnte versuchen, den Referrer zu betrachten, aber ... das ist nicht über alle Browser und Protokolle zuverlässig.

So haben Sie zwei Möglichkeiten:

  • haben die Client-API sagen Sie die anrufende Seite - beachten Sie, dass es trivialerweise vom Kunden gehackt werden könnte
  • einige nicht-triviale Proxy tun (etc) Konfiguration, so dass die Website der ajax-Server antwortet auf die Client-Domäne

Beachten Sie, dass http://clientwebsite.online/api/GetURLName/ war nicht die tatsächliche URL und wird nicht gehen komme von überall her.

+0

Ich konnte Ihre Antwort nicht verstehen. Kannst du ein paar Zeilen für mich schreiben, um meine Ausgaben zu bekommen? –

+0

@SujeetKumarSingh "Können Sie mir einige Zeilen schreiben, um meine Ausgaben zu erhalten?" Nein, denn was Sie wollen, basiert auf einer fehlerhaften Prämisse. Was Sie wollen ** ist nicht nur ein Fall von ein paar Zeilen ändern **. Es beinhaltet die Änderung Ihres Ansatzes. Ich habe bereits 2 verschiedene Möglichkeiten dafür beschrieben. –

+0

Ich weiß, ich gehe in die falsche Richtung, aber ich kann offen sagen, \t Ich konnte Ihren obigen Ansatz nicht verstehen ... –

1

Sie können die Ausgabe an Ihre AJAX-Request anhängen:

$('#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.'); 
      } 
     }); 
    }); 

Sie werden dann natürlich, dass Abfragezeichenfolgeflag in Ihrem WebAPI Code zu lesen haben

Verwandte Themen