Ich habe zwei Projekte; Eines ist ein MVC-Projekt, das eckige (also nicht reale MVC) verwendet, und das andere ist ein WebAPI2-Projekt, bei dem verschiedene Controller Daten an das erste Projekt übergeben und Daten davon annehmen.Aufruf von WebAPI2-Dienst von AngularJS mit NTLM-Sicherheit
Das erste Projekt wird unter Verwendung von Winkeln der http $ den WebAPI Dienst abfragen:
var request = $http({
method: "GET",
url: "http://localhost:1234/api/Entity/",
json: true,
crossDomain: true,
datatype: 'json',
params: { action: "get" },
withCredentials: true
});
Wenn dies in IE10 läuft, werden die Daten ohne Probleme überhaupt zurückgegeben. Die Ausführung in Chrome oder Firefox führt jedoch zu einem 401-Fehler. Ich habe Fiddler verwendet, um den Unterschied zwischen den Anfragen zu untersuchen, und habe ihn auf den Authorization-Header beschränkt. Der IE Anfrage sieht wie folgt aus:
GET http://localhost:1234/api/Entity?action=get
HTTP/1.1
Referer: http://localhost:1234/Home
Accept: application/json, text/plain, */*
Accept-Language: en-GB
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)
Connection: Keep-Alive
DNT: 1
Authorization: Negotiate oXcwdaADCgEBoloEWE5UTE1TU1AAAwAAAAAAAABYAAAAAAAAAFgAAAAAAAAAWAAAAAAAAABYAAAAAAAAAFgAAAAAAAAAWAAAABXCiOIGAbEdAAAAD+mN4751DVFNv2xW6c59dCajEgQQAQAAAPUXp1AtIpqEAAAAAA==
Host: localhost:58843
Von dem, was ich sammeln kann, wird das Format des Token gibt an, dass es NTLM-Sicherheit verwendet. Gibt es etwas, was ich tun kann, um diesen Authorization Header über die $ http Anfrage zu übergeben?
Ich kann nicht sehen, dass im WebAPI-Dienst eine Sicherheit angegeben ist (ich habe dieses Projekt in den letzten Tagen geerbt, also bin ich noch nicht vollständig vertraut); Wird der Berechtigungsheader gesendet, da es sich um eine CORS-Anfrage handelt?
Ich bin derzeit an dem Punkt, die WebAPI-Controller in das erste Projekt zu verschieben, um alle domainübergreifenden Aufrufe zu vermeiden; Vielleicht ist dies das Beste, wenn man bedenkt, dass dieser REST-Dienst nur vom MVC-Projekt aufgerufen wird?
Jede Hilfe wäre sehr willkommen!
Während dies theoretisch die Frage beantworten könnte, [wäre es vorzuziehen] (http://meta.stackoverflow.com/q/8259), die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz zur Verfügung zu stellen. –
Vielen Dank für das Feedback, wie Sie Antworten schreiben können. – user906573