Autenticação básica usando o XHR
Eu estou tentando obter alguma resposta do meu servidor que precisa de autenticação básica. Então, quando eu uso o curl como:
curl -u user:pass http://myserver.com/get/send-my-data
Está me dando uma resposta correta. Mas quando estou criando uma solicitação XHR usando o jquery AJAX. Estou tendo erro 403. Aqui está a minha configuração AJAX:
$.ajax ({
type: 'GET',
url: 'http://myserver.com/get/send-my-data',
beforeSend: function(xhr) {
xhr.setRequestHeader("Authorization", "Basic" + encode64(user:pass)); // I have calculated base64 encoded value of user:pass correctly.
},
success: function(d) { console.log(d); },
crossDomain: 'true'
});
Eu estou tendo 403 resposta. Aqui está o cabeçalho da solicitação obtido do curl usando a opção -v.
> POST /get/send-my-data HTTP/1.1
**> Authorization: Basic ********** // Removed original code deliberately**
> User-Agent: curl/7.27.0
> Host: localhost:8080
> Accept: */*
> Content-Length: 264
> Expect: 100-continue
> Content-Type: multipart/form-data; boundary=----------------------------3c0e06f1e2b4
Aqui está o cabeçalho obtido de charles do meu pedido de XHR
OPTIONS /get/send-my-data HTTP/1.1
Host 10.40.55.110:4502
Access-Control-Request-Method GET
Origin http://localhost:8080
User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.79 Safari/537.4
**Access-Control-Request-Headers origin, authorization, accept**
Accept */*
Referer http://localhost:8080/proof/check.html
Accept-Encoding gzip,deflate,sdch
Accept-Language en-US,en;q=0.8
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.3
Eu não conseguia entender porque isso está acontecendo? Por que meu cabeçalho de solicitação XHR não está mostrando o cabeçalho Autorização, como mostrado no cabeçalho curl. Por favor, sugira onde eu estou fazendo errado.
PS: É um pedido de domínio cruzado.