Je suis le développement de Single Page App à l'aide Angulaire. Le backend expose RESTE des services qui nécessitent une authentification de Base. Arriver index.html ou l'un des scripts ne nécessite pas d'authentification.
J'ai une drôle de situation où l'un de mon point de vue a un <img>
où l' src
correspond à l'url d'une API REST qui nécessite une authentification. L' <img>
est traité par le navigateur et je n'ai aucune chance de définir l'en-tête d'autorisation pour OBTENIR la demande de il fait. Qui provoque le navigateur demande d'informations d'identification.
J'ai tenté de résoudre ce problème en faisant ceci:
- Laissez
img
src
vide dans la source - Au document "prêt", faire un
XMLHttpRequest
à un service (/api/login
) avec l'Autorisation d'en-tête, juste à cause de l'authentification à se produire. - À l'issue de cet appel, régler le
img src
d'attribut, en pensant que d'ici là, le navigateur ne sais pour inclure l'en-tête d'Autorisation dans les requêtes suivantes...
...mais il ne le fait pas. La demande pour l'image sort sans les en-têtes. Si j'entrez les informations d'identification, puis toutes les autres images sur la page de droite.
(J'ai aussi essayé et Angulaire de l' ng-src
, mais qui a produit le même résultat)
J'ai deux questions:
- Pourquoi ne pas le navigateur (IE10) inclure les en-têtes à toutes les demandes après le succès de l'
XMLHttpRequest
? - Que puis-je faire pour contourner ce problème?
@bergi demandé pour les demandes d'informations. Ils sont ici.
Demande d' /api/login
GET https://myserver/dev30281_WebServices/api/login HTTP/1.1
Accept: */*
Authorization: Basic <header here>
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; WOW64; Trident/6.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729)
Connection: Keep-Alive
Réponse (/api/login)
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 4
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Fri, 20 Dec 2013 14:44:52 GMT
Demande d' /utilisateur/image/2218:
GET https://myserver/dev30281_WebServices/api/user/picture/2218 HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; WOW64; Trident/6.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729)
Connection: Keep-Alive
Et puis le navigateur web de demande d'informations d'identification. Si j'entre eux, je reçois cette réponse:
HTTP/1.1 200 OK
Cache-Control: public, max-age=60
Content-Length: 3119
Content-Type: image/png
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Fri, 20 Dec 2013 14:50:17 GMT