1

IEのJSONフィードからデータを取得するのに問題があります。

これがテストです。FF、Chrome、Safariでアラートを出しますが、IEではアラートを出しません。

function do_something(data){
    alert(data);
}

$(document).ready(function() {
    $.getJSON('https://www.mec.ca/api/v1/stores/1', do_something);
});

そしてここにフィドルがあります:http://jsfiddle.net/upksp/

私は運が悪かったように見える質問に対して次の解決策を試しました。

ヘッダーに問題があるのではないかと思わずにはいられませんが、診断するのに十分な知識がありません。同じページでJSONPを問題なく使用できましたが、競合は見られません。ヘルプ!


注:私が取り組んでいるコードの場合、APIはそれを要求しているスクリプトと同じdomain(1)にあります。ただし、テストでは、 www.domain.comenvironment.domain.comなどの異なるサブドメイン(2)があります。(2)問題があると思いますが、(1)はうまくいきますか?

4

1 に答える 1

1

ブラウザーのセキュリティ上の理由により、あるオリジンから別のオリジンへ (例: jsfiddle.net からwww.mec.caへ) リクエストを行うことはできません。近年、ブラウザーは CORS (Cross-Origin Resource Sharing) を使用してこれを回避し始めています。これにより、サーバー ( www.mec.ca ) がそれらを受け入れるように構成されている限り、ブラウザーは別のドメインに要求を行うことができます。これは、応答ヘッダーで確認できます。URL ( https://www.mec.ca/api/v1/stores/1 ) では、CORS が有効になっています。これは、次の行の応答ヘッダーで確認できます。Access-Control-Allow-Origin: *. これは、どのドメインからのリクエストも許可されることを意味します (*)

HTTP/1.1 200 OK
Date: Sat, 24 Nov 2012 01:19:23 GMT
Server: Apache
Content-Language: en
Access-Control-Allow-Origin: *
X-Powered-By: Servlet/2.5 JSP/2.1
Vary: Accept-Encoding,User-Agent
Transfer-Encoding: chunked
Content-Type: application/json

IE は CORS 標準の実装に遅れをとっていたため、IE10 まで IE に追加されませんでした。したがって、フィドルは以前のバージョンの IE では機能しません。

于 2012-11-24T01:25:43.703 に答える