2013-04-23 19 views
6

Próbuję uzyskać dostęp do niektórych usług RESTful, które działają na podstawie wstępnego podstawowego uwierzytelniania Apache. Korzystam z Ajax jquery i wysyłając użytkownika i hasło z nagłówkiem "Uwierzytelnianie". Jednak moje żądanie jest generowanie pustego błędu przy każdym uruchomieniu.jquery ajax & preemptive basic auth

Oto pełna $ .ajax wezwanie:

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

Co robię źle? Czy jest coś, o czym tutaj ignoruję? Dzięki.

+0

Aktualizacja: \t Zmieniłem parametry $ ajax. Teraz przekazuję swoje poświadczenia przy użyciu nazwy użytkownika: i hasła: argumenty. Błąd mówi: "Odmowa dostępu do zastrzeżonego URI" Brzmi jak problem z wieloma domenami, nie? –

+0

Tak, jest to problem z wieloma domenami, jeśli pojawi się "Odmowa dostępu do zastrzeżonego URI". Musisz użyć JSONP do tego –

+0

Niestety, myślę, że zamierzam użyć proxy PHP do wywoływania usług. Wygląda na to, że nie ma sposobu na przekroczenie tego przy pomocy prostego skryptu JavaScript. –

Odpowiedz

1

Rozwiązanie jest po stronie serwera, należy uwzględnić niestandardowe nagłówki w odpowiedzi na działania w wielu domenach. Eksperyment wysłać następujące nagłówki w odpowiedzi:

Access-Control-Allow-Origin: yourApiDomain

programu Access Control-Allow-methods: *

  • W przypadku korzystania z niestandardowych nagłówków:

    Access-Control-Expose-Nagłówki X-My-custom-header, x-Another-custom-header

    Access-Control-Allow-Nagłówki: X-My-custom-Header, X-Inną-koszt m-Header

  • W przypadku korzystania z plików cookie HTTP i informacje uwierzytelniania http:

    kontroli dostępu-allow-Poświadczenia: true

Aby uzyskać więcej informacji przeczytaj dokumentację w MDN about CORS: