2017-02-27 2 views
0

Mit Postman kann ich eine Get und senden Auth-Token als Header-Taste, und dann ein Wert wie Z4TTHmY98=gFw2rG und es geht in Web-API-Methode einfach gut, wie es gegen eine benutzerdefinierte Attribute überprüft wird.Senden von Token und Wert im Browser zu Web API

Allerdings möchte ich

hier um den Browser verwenden, wird die api, die

http://localhost:29001/api/test 

Mein Kopf Key = Auth-Token
Mein Kopf-Wert = Z4TTHmY98 = getroffen wird gFw2rG

Nachdem ich einige Artikel gelesen hatte, dachte ich, das würde funktionieren t Header ist Null beim Durchlaufen Debug von Web API-Methode.

Ist es möglich, mit Browser von nicht zu tun? Wenn das so ist, wie?

http://localhost:29001/api/test?Auth-Token=Z4TTHmY98=gFw2rG 
+0

den Token in der Steuerung als String-Parameter receiveing? –

+0

'öffentliche ActionResult Test (String AuthToken)' sollte mit ohne den Bindestrich mit der Standard-Route Einstellung –

Antwort

0

Die Browser-Startseite sendet keine benutzerdefinierten Header. Aber Sie können AJAX-Anfrage mit benutzerdefinierten Headeres senden, die Sie benötigen. Das folgende Beispiel verwendet jQuery.ajax

$.ajax({ 
    url: '/api/test', 
    headers: { 'Auth-Token': 'Z4TTHmY98=gFw2rG'} 
}); 

aktualisieren

Wenn Sie die gleichen Header mit jeder AJAX-Request von Ihrer Seite senden möchten, können Sie ajaxSetup + beforeSend verwenden:

$.ajaxSetup({ 
    beforeSend: function(xhr) { 
     xhr.setRequestHeader('Auth-Token', 'Z4TTHmY98=gFw2rG'); 
    } 
}); 
+0

Das ist in Ordnung - Hoffnung Browser könnte es tun, ich werde Briefträger und dann verwenden sicherlich auch Client-Seite thx –

0

Verwenden Sie Webapi 2 Parameterbindung.

Sie können einen Anruf von Browser machen, wie unten

http://localhost:29001/api/test/Z4TTHmY98=gFw2rG/ 

[HttpGet] 
[Route("/test/{AuthToken}") 
public IHttpActionResult Test([FromUri] string AuthToken) 
{ 
    //Do whatever you want to do. 
} 

Vorsicht mit der Strecke. Es muss korrekt und konfiguriert sein in webapiconfig.

+0

Ich weiß, wie Web Api für diese Einrichtung, ich möchte wissen, wie in URL im Browser senden –

+0

@ JeremyMiller ich aktualisiert meine Antworten. – Venky

+0

Sicher - ich könnte URL senden, Problem ist, dass es in Headern aus einem Grund gesendet wird, ich hatte nur gehofft, dass Browser in der Lage sein zu senden, aber es ist keine große Sache.Dies ist sicherlich eine kreative Art, es zu tun, aber ich würde Web API Route und Methode ändern müssen und dann die gesamte erweiterte Autorisierungsklasse, die die Datenbank nach Schlüssel/Wert-Paaren sucht, ist aus dem Bild, wie der Punkt wirklich haben soll lose Kopplung/Trennung von Bedenken - dies würde die API-Controller in einen Sicherheitsprotokoll-Handshake zwingen und das ist nicht, wie meine App funktioniert, Web-API-Methoden nicht erlaubt –

0

AJAX Antrag Seite kann wie ajaxSetup + beforeSend:

verwenden

Informationen

wenn Sie mit diesen Dritten API aufrufen, dann können Sie wie

verwenden
objHttpClient.DefaultRequestHeaders.TryAddWithoutValidation("Key", "value"); 
objHttpClient.DefaultRequestHeaders.TryAddWithoutValidation("Authorization", "zMXGa8WNQuaBxWazgUhO2dw="); 
Verwandte Themen