2013-04-23 14 views
6

Sto cercando di raggiungere alcuni servizi RESTful in esecuzione con l'autenticazione di base preemittiva di Apache. Sto usando jquery Ajax e invio l'utente e la password con l'intestazione "Autenticazione". Tuttavia, la mia richiesta sta generando un errore vuoto ogni volta che viene eseguita.jquery ajax e autenticazione di base preventiva

Ecco l'intero $ .ajax chiamata:

$.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){ 
     ... 
     } 
}); 

Quello che sto facendo male? C'è qualcosa che sto ignorando qui? Grazie.

+0

Aggiornamento: \t Ho modificato i parametri $ ajax. Ora sto passando le mie credenziali con username: e password: argomenti. L'errore dice: "Accesso a URI limitato negato" Sembra un problema tra domini, no? –

+0

Sì, si tratta di un problema interdominio se si ottiene "Accesso a URI limitato negato". È necessario utilizzare JSONP per questo –

+0

Purtroppo, penso che userò un proxy PHP per chiamare i servizi. Sembra che non ci sia modo di attraversarlo con un semplice JavaScript. –

risposta

1

La soluzione è sul lato server, è necessario includere alcune intestazioni personalizzate in risposta a lavori interdominio. Esperimento inviare i seguenti intestazioni in risposta:

Access-Control-Allow-Origin: yourApiDomain

access-control-allow-Metodi: *

  • Nel caso di utilizzo di intestazioni personalizzate:

    Access-Control-Expose-intestazioni: X-My-Custom-Header, X-altro-Custom-Header

    Access-Control-Allow-intestazioni: X-My-Custom-Header, X-altro-Custo m-Header

  • Nel caso di utilizzo di cookie HTTP e informazioni di autenticazione HTTP:

    Access-Control-Allow-Credenziali: vero

Per maggiori informazioni leggere la documentazione in MDN about CORS: