2017-06-24 5 views
0

Pourquoi ne pas obtenir problème de contrôle d'accès permettent aux origine lorsque nous avons img tag élément src=urlOfdifferentDomain fait référence à un domaine différentde contrôle d'accès permettent aux origine question de la charge de l'image

comme cas: 1

<img src="urlOfdifferentDomain" /> 

mais nous aurons la même erreur quand nous faisons le cas 2

//creating image element 
a=new Image(); 
// image on load function 
a.onload=function(){ 
} 
// assigning src function 
a.src=urlOfdifferentDomain 

Je veux juste savoir quelle est la différence entre ces deux approches. J'affecte également csp img-src dans webserver à self puis également charger l'image depuis un domaine différent dans le cas 1

Répondre

1

Le cas 1 est OK car l'utilisation de l'image en HTML n'expose pas la ressource (d'un autre domaine) à JavaScript , donc aucun problème de sécurité n'est causé.

Le cas 2 signale une erreur car l'utilisation de l'objet Image DO présente des risques de sécurité pour certaines opérations telles que l'édition Canvas, car il expose la ressource d'un autre domaine vers JavaScript.

MISE À JOUR: Cette erreur est due au contrôle de sécurité du navigateur. Le serveur Web ne sait pas si la requête provient de la balise html ou de l'appel javascript, et renvoie la ressource quand même - vous pouvez vérifier le panneau de débogage réseau dans le navigateur, et voir que la ressource est téléchargée avec le statut 200. Après le la ressource est téléchargée et exposée à l'opération JavaScript. Le navigateur vérifiera si l'opération JavaScript sur la ressource est vulnérable. Si oui, l'erreur Access-Control-Allow-Origin sera signalée si CORS n'est pas activé dans le serveur.

+0

mais cela devrait dépendre du serveur web au lieu de javascript, je veux dire quand l'appel interdomaines va dans le cas 1, il ira au serveur Web et le webser ne parle pas de l'appel javascript de la balise html. aussi assigner csp img-src dans webserver à self puis aussi charger l'image depuis un domaine différent dans le cas 1 " –

+0

@SudhanshuAgarwal Le serveur web ne sait pas si la requête provient d'une balise html ou d'un appel javascript, et retournera quand même la ressource - vous pouvez vérifier le panneau de débogage réseau dans le navigateur, et voir que la ressource est téléchargée avec le statut 200. Une fois la ressource téléchargée, le navigateur vérifiera si la ressource récupérée sera exposée à JavaScript. Si oui, et que l'opération JavaScript sur la ressource est vulnérable, l'erreur 'Access-Control-Allow-Origin' sera signalée si CORS n'est pas activé dans le serveur. – shaochuancs

+0

@SudhanshuAgarwal Si CSP est réglé sur 'img-src 'self';', une erreur sera signalée: 'Refusé de charger l'image ... car elle enfreint la directive suivante sur la politique de sécurité du contenu:" img-src 'self' ".» – shaochuancs