0

CORS AJAX リクエストを送信しようとしていますが、失敗しているようです:

var xhr = new XMLHttpRequest();
xhr.open("GET", "http://enable-cors.org");
xhr.addEventListener("load", function() { console.log(this.responseText); });
xhr.send();

http://stackoverflow.comを閲覧しながら、コンソールからこのリクエストを行っています。

次のエラー メッセージが表示されます。

XMLHttpRequest cannot load http://enable-cors.org/. Origin http://stackoverflow.com is not allowed by Access-Control-Allow-Origin. 

enable-cors.org は正しいAccess-Control-Allow-Originヘッダーを送り返すはずだと思います :) しかし、これは他の Web サイトにも当てはまります。

また、consoleリクエストで Origin ヘッダーが適切に送信されたこともわかります。

Chromium 28 を使用していますが、Firefox でも失敗します。

HTTP リクエスト ヘッダーは次のとおりです。

Request URL:http://enable-cors.org/
Origin:http://stackoverflow.com
Referer:http://stackoverflow.com/posts/18303449/edit
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36

私は何を間違っていますか?

4

1 に答える 1

1

応答ヘッダーが利用可能であると確信しています。ほとんどの場合、正しい場所を見ていないだけです。「ヘッダー」タブではなく、「応答」タブを見ているのではないかと思います。いずれにせよ、enable-cors.org への/からのリクエスト/レスポンスを自分で調べたところ、レスポンスに「Access-Control-*」ヘッダーがないため、このサイトがクロスオリジン リクエストを許可していないことは明らかです. だから、あなたは運が悪いです。

ところで、そもそも enable-cors.org に対してクロスオリジン リクエストを作成しようとしているのはなぜですか? 静的サイトです。その主な目的は、他の人に CORS について教えることです。ただし、学習者が CORS を自分でテストできるような「サンドボックス」のようなものを提供するとよいと思います。おそらくそれは、サイトに関連するフォーラムで提案できることです。ナビゲーション バーの [提案] リンクをクリックします。

于 2013-08-19T14:43:02.810 に答える