J'essaie d'utiliser ajax pour accéder à certaines données sur mon site Web à partir d'un script que je veux être en mesure d'exécuter n'importe où. Le code ajax de mon script ressemble à quelque chose comme çaPourquoi ai-je une erreur Access-Control-Allow-Origin lorsque j'essaie d'utiliser ajax pour accéder à une page?
var ajax = new XMLHttpRequest();
ajax.open('GET', 'http://mywebsite.com/page?i=2&json', true);
ajax.onreadystatechange = function() {
if (ajax.status == 200) {
console.log(JSON.parse(ajax.responseText));
}
else
console.log('Could not connect.');
}
ajax.send();
Mais quand je le lance je reçois l'erreur
XMLHttpRequest ne peut pas charger http://mywebsite.com/page?i=2&json. Origine http://anotherwebsite.com est non autorisé par Access-Control-Allow-Origin.
Sur le script sur mon site, j'ai les lignes suivantes à l'intérieur de la page,
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET');
Mais je reçois toujours la même erreur. Je veux que cette page sur mon site soit accessible à partir de n'importe quelle autre page sur Internet via ajax, car mon script est une extension qui devrait être utilisable sur n'importe quel site web. Ok J'ai réussi à ce résultat si je définissais l'attribut 'withCredentials' sur l'objet ajax sur true et que mon serveur renvoyait true à l'en-tête Access-Control-Allow-Credentials. Ensuite, avec mon script, j'ai également passé le domaine afin qu'il puisse être retourné dans Access-Control-Allow-Origin sur mon script serveur. Le caractère générique * n'a pas fonctionné. Ceci est seulement testé dans Chrome jusqu'à présent.
Je ne peux pas faire cela car otherdomain.com n'est pas mon domaine, il pourrait s'agir de n'importe quel domaine puisqu'il s'agit d'une extension. – fent
- mais le navigateur en question fait, ou il ne serait pas donner cette erreur. – Quentin
le navigateur fait quoi? – fent