Il y a quelque chose à propos de Cross Origin Resource Sharing (CORS) que je n'ai jamais vraiment compris, à savoir qu'avec une requête HTTP d'origine croisée, ce n'est pas le client qui décide du serveur auquel il veut faire confiance; à la place, le serveur déclare (dans l'en-tête de réponse Access-Control-Allow-Origin
) qu'un ou plusieurs clients particuliers (origines) lui font confiance. Un navigateur compatible CORS fournira uniquement la réponse du serveur à l'application si le serveur indique que le client approuve le serveur. Cela semble être une manière inverse d'établir une relation d'approbation entre deux parties HTTP.Avec CORS, pourquoi les serveurs déclarent-ils quels clients peuvent lui faire confiance, au lieu que les clients déclarent à quels serveurs ils font confiance?
Ce qui aurait plus de sens pour moi est un mécanisme similaire à celui-ci: Le client déclare une liste d'origines auxquelles il fait confiance; par exemple, via un élément fictif <meta allow-cross-origin="https://another-site:1234"/>
dans le <head>
. (Bien sûr, un navigateur doit s'assurer que ces éléments sont en lecture seule et ne peuvent pas être supprimés, modifiés ou augmentés via des scripts.)
Qu'est-ce que je ne comprends pas au sujet de CORS? Pourquoi une déclaration côté client d'origine de confiance ne fonctionnerait-elle pas? Pourquoi les serveurs vérifient-ils quels clients (origines) peuvent faire confiance à leurs réponses? Qui est réellement protégé de qui par CORS? Protège-t-il le serveur ou le client?
(Ce sont beaucoup de questions. J'espère qu'il est clair que je ne m'y attendais pas une réponse à chacun d'entre eux, mais juste une réponse qui souligne mon incompréhension fondamentale.)
Pour le downvoter, j'apprécierais un indice ce qui ne va pas avec ma question. Je suis heureux de l'éditer, d'expliquer plus loin, ou de rétracter la question si c'est vraiment inapproprié. – stakx
Le site Web hébergeant le JavaScript indique implicitement qu'il fait confiance au site auquel il tente de récupérer les données en demandant des données à partir de cette URL en premier lieu. – Quentin
"le serveur déclare (dans l'en-tête de réponse Access-Control-Allow-Origin) qu'un ou plusieurs clients particuliers (origines) lui font confiance" - Non, il déclare qu'il approuve ces origines, et non qu'elles lui font confiance. – Quentin