Pourquoi mon serveur ignore les en-têtes d’authentification d’une demande ajax?

De JavaScript j’ai utilisé:

xhr.setRequestHeader("Authorization", make_base_auth(username,password)); 

Cependant, la requête HTTP n’a pas d’en-tête d’ Authorization :

 OPTIONS /restService/index?_=1362589672203 HTTP/1.1 Host: myappinheroku.herokuapp.com User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:19.0) Gecko/20100101 Firefox/19.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: es-MX,es-ES;q=0.8,es-AR;q=0.7,es;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Origin: http://127.0.0.1:8081 Access-Control-Request-Method: GET Access-Control-Request-Headers: authorization,content-type Connection: keep-alive 

Il semble que l’authentification soit totalement ignorée. Qu’est-ce qui ne va pas? Comment pouvons-nous activer l’authentification pour CORS?


Voici la réponse du serveur à la requête ci-dessus:

 HTTP/1.1 401 Full authentication is required to access this resource Access-Control-Allow-Credentials: true Access-Control-Allow-Headers: origin, authorization, accept, content-type, x-requested- with Access-Control-Allow-Methods: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS Access-Control-Allow-Origin: * Access-Control-Max-Age: 3600 Server: Jetty(7.xy-SNAPSHOT) Set-Cookie: JSESSIONID=6smxjnlqelmc1lg98ain16wv7;Path=/ WWW-Authenticate: Basic realm="Ralph's Bait and Tackle" Transfer-Encoding: chunked Connection: keep-alive 

La valeur * ne peut pas être utilisée pour l’en Access-Control-Allow-Origin tête Access-Control-Allow-Origin lorsque Access-Control-Allow-Credentials est true . Vous devrez définir Access-Control-Allow-Origin sur la valeur de l’origine elle-même (par exemple, http://127.0.0.1:8081 dans ce cas).

Notez également que les informations d’identification d’authentification ne sont pas envoyées sur la demande de contrôle en amont. Ils ne sont envoyés que sur la demande réelle. Le contrôle en amont sert uniquement à vérifier que la demande CORS est autorisée, il ne doit effectuer aucune authentification elle-même.