Je n'ai jamais vraiment aimé la direction prise par CORS (partage de ressources entre origines). Je pense qu'il y a une idée fausse selon laquelle la communication client-serveur devrait fonctionner.
Le concept général est:
User:
BonjourServer
, j'envoie une telle demande
- Le serveur prend en charge la demande:
Server:
Bonjour utilisateur, j’envoie ma réponse à votre requête.- Le serveur ne prend pas en charge la demande, REFERRER ne correspond pas, etc.:
Server:
400 - mauvaise demande
Mais, d'accord, supposons que CORS rend service aux serveurs en supposant que des erreurs 400
se produisent lors de certaines tentatives, telles que l'obtention des informations de profil de l'utilisateur abusant du fait qu'il est connecté. Je pense que c'est vraiment bien, mais ça a l'air stupide de la façon dont elle est maintenant appliquée:
Le script veut envoyer une demande à une origine différente ...
User:
BonjourServer
, je souhaite envoyer une demande. Quelles demandes acceptez-vous?
- Le serveur est au courant de CORS:
Server:
Bonjour utilisateur, j'envoie mes stratégies CORS.
Le navigateur décide d'envoyer ou de ne pas envoyer ...- Le serveur n'est pas au courant de CORS:
Server:
404 - non trouvé
Zut ... je voulais juste aller chercher une image ...
Mais pourquoi CORS ne se contente-t-il pas de supprimer les cookies? Souvent, les scripts veulent extraire du JSON, d’autres scripts ou des images d’origines différentes. Dans ce cas, ils doivent établir un serveur proxy. Ces les procurations sont très populaires .
Ces progrès ont compliqué l’indépendance des applications Web vis-à-vis des serveurs (qui sont maintenant capables de sauvegarder des fichiers, d’analyser des fichiers, etc.).
Alors, quel est l’intérêt de bloquer une requête GET que je peux contourner par un proxy?
Je dirais que l'objectif de la SCRO est de rendre le Web plus sûr pour les utilisateurs finaux et que la plupart de ses implémentations sont en réalité résumées dans les navigateurs modernes.
Ce que je veux dire, c'est qu'il n'est pas conçu pour que votre contenu côté serveur soit protégé ou inaccessible, car vous ne pouvez toujours PAS envoyer les en-têtes de référent et les contourner. Ce n'est clairement pas le cas pour les internautes "inconscients" qui souhaitent simplement naviguer sur le Web sans se soucier des attaques XSS.