2

どこでも実行できるようにしたいスクリプトから 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 でのみテストされています。

4

1 に答える 1

1

ほとんどのブラウザーではクロスドメイン ajax を実行できないため、クロスドメイン ajax を作成し、JavaScript に応答を返すローカル サーバー側スクリプトを呼び出すことができます。「プロキシスクリプト」と名付けられたのを聞いたことがありますが、これは私が知っている唯一の信頼できるソリューションです。

step 1: javascript on otherdomain.com --GET--> server-side script on otherdomain.com
step 2: server-side script on otherdomain.com --GET--> mywebsite.com/page?i=2&json
step 3: mywebsite.com/page?i=2&json --JSON--> server-side script on otherdomain.com
step 4: server-side script on otherdomain.com --JSON--> javascript on otherdomain.com
于 2010-12-03T01:54:48.843 に答える