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.