2016-04-22 5 views
0

Ich habe eine Webanwendung, die aus einer Videoseite und einer Web-API besteht, die eine Protokollierung durchführt (Laden der Seite, Fertigstellung des Videos oder Schließen der Seite). Ich schieße diese Ereignisse eine Ajax-Post mit:Wie kann ich einen AJAX-Post mit dem Autorisierungsheader die erste Anfrage auslösen (Windows-Authentifizierung)?

function logAction(actionToLog) { 
    $.ajax({ 
     type: 'POST', 
     url: "/api/v/" + currentVideoName + "/" + currentUser + "/" + vid.currentTime + "/" + actionToLog + "/" + currentBrowserType + "/", 
     cache: false, 
     contentType: 'application/json; charset=utf-8' 
    }); 

Mit Fiddler, bemerkte ich, dass alle diese Anrufe zweimal ausgeführt werden:

-Header für die erste (Unauthorized 401) Anfrage. Keine Berechtigung token:

POST http://HOSTNAME/api/v/ValuePropVideo1/tfrick/0/started/Chrome/ HTTP/1.1 
Host: HOSTNAME 
Connection: keep-alive 
Content-Length: 0 
Cache-Control: max-age=0 
Accept: */* 
Origin: http://HOSTNAME 
X-Requested-With: XMLHttpRequest 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36 
Content-Type: application/json; charset=utf-8 
Referer: http://HOSTNAME/v/ValuePropVideo1 
Accept-Encoding: gzip, deflate 
Accept-Language: en-US,en;q=0.8 

-Header für die zweite (gültig) Anfrage. Autorisierungs-Token vorhanden:

Authorization: Negotiate YIII+QYGKwYBBQUCo... 

Dies funktioniert gut für Seite geladen und Video abgeschlossen, da der Browser immer noch offen ist, aber wenn ich meine Ajax-Aufruf für den Benutzer feuern den Browser zu schließen, nur die erste Anforderung gesendet wird und ein 401 Fehler wird empfangen.

Meine Frage ist: Wie kann ich diese Ajax Anrufe mit den Windows-Anmeldeinformationen auslösen?

Antwort

1

Nachdem ich lange mit diesem Problem zu kämpfen hatte, entschied ich mich, in das IIS Setup zu gehen und den "Negotiate" Provider unter den erweiterten Einstellungen für "Windows Authentication" unter "Authorization" zu entfernen; Verlassen nur NTML. Das scheint mein Problem zu beheben.

site->Authentication->Windows Authentication->Providers

Verwandte Themen