2013-04-23 15 views
6

Ich versuche einige RESTful-Dienste zu erreichen, die unter der Preemptive-Standardauthentifizierung von Apache ausgeführt werden. Ich benutze jquery Ajax, und sende den Benutzer und das Passwort mit dem Header 'Authentifizierung'. Allerdings wirft meine Anfrage jedes Mal einen leeren Fehler, wenn sie ausgeführt wird.jquery ajax & preemptive basic auth

Hier ist der vollständige $ Schnipsel Aufruf:

$.ajax({ 
     cache:false, 
     url: urladdress, 
     type:'GET', 
     async:false, 
     headers: { "cache-control": "no-cache" }, 
     dataType: "html", //or xml or json 
     contentType: "html", 
     beforeSend : function(req) 
     { 
      req.setRequestHeader('Authorization', "Basic " + base64string); //user:password); 
     }, 
     success: function(data){ 
     successcallback(data); 
     }, 
     error: function(xhRequest, ErrorText, thrownError){ 
      alert("ERROR: "+ JSON.stringify(xhRequest)); 
     }, 
     complete: function(result){ 
     ... 
     } 
}); 

Was mache ich falsch? Gibt es etwas, das ich hier ignoriere? Vielen Dank.

+0

Update: \t Ich habe die $ ajax Parameter geändert. Jetzt gebe ich meine Zugangsdaten mit Benutzername: und Passwort: Argumente. Der Fehler sagt: "Zugriff auf eingeschränkte URI verweigert" Klingt wie ein Cross-Domain-Problem, nicht? –

+0

Ja, es ist ein domänenübergreifendes Problem, wenn Sie "Zugriff auf eingeschränkte URI verweigert" erhalten. Sie müssen dafür JSONP verwenden –

+0

Leider werde ich einen PHP-Proxy für den Aufruf der Dienste verwenden. Es scheint, dass es keine Möglichkeit gibt, das mit einfachem JavaScript zu lösen. –

Antwort

1

Die Lösung ist auf der Serverseite, Sie müssen einige benutzerdefinierte Header als Antwort auf domänenübergreifenden Arbeiten enthalten. Experiment der folgenden Header in Antwort senden:

Access-Control-Allow-Origin: yourApiDomain

Access-Control-Allow-Methoden: *

  • Bei Verwendung von benutzerdefinierten Header:

    Access-Control-Expose-Header: X-My-Custom-Kopfzeile, X-Another-Custom-Header-

    Access-Control-Allow-Header: X-My-Custom-Kopfzeile, X-another-Custo m-Kopf

  • Bei Verwendung von HTTP-Cookies and HTTP-Authentifizierung Informationen:

    Access-Control-Allow-Credentials: true

Für weitere Informationen lesen Sie die Dokumentation in MDN about CORS: