どこでも実行できるようにしたいスクリプトから ajax を使用して、自分の Web サイトのデータにアクセスしようとしています。私のスクリプトのajaxコードは次のようになります
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();
しかし、実行するとエラーが発生します
XMLHttpRequest はhttp://mywebsite.com/page?i=2&jsonを読み込めません 。オリジンhttp://anotherwebsite.comは Access-Control-Allow-Origin で許可されていません。
私のウェブサイトのスクリプトでは、ページ内に次の行があります。
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET');
しかし、私はまだ同じエラーが発生します。私のスクリプトはどの Web サイトでも使用できる拡張機能であるため、Web サイトのそのページに ajax を介してインターネット上の他のページからアクセスできるようにしたいと考えています。
編集: ajax オブジェクトの 'withCredentials' 属性を true に設定し、サーバーで Access-Control-Allow-Credentials ヘッダーを true に設定して送り返すと、これが機能します。次に、スクリプトでドメインも渡したので、サーバー スクリプトの Access-Control-Allow-Origin で返されます。ワイルドカード * は機能しませんでした。これは、これまでのところ Chrome でのみテストされています。