これは厄介な問題です。この問題を抱えているのはIEだとは限りません。基本的に私はNode.jsサーバーを持っています。そこから、いくつかのJSONデータを表示するためにクロスドメイン呼び出しを行っています。Node.JS(expressを使用)のクロスドメインjQuery.getJSONがInternet Explorerで動作しません
これはJSONPコールである必要があり、URLでコールバックを行います。私は確信していないことは、これを行う方法ですか?
だから、ウェブサイト(domainA.com)は(すべては、Firefox 3で正常に動作します)このようなJSスクリプトでHTMLページがあります。
<script type="text/javascript">
var jsonName = 'ABC'
var url = 'http://domainB.com:8080/stream/aires/' //The JSON data to get
jQuery.getJSON(url+jsonName, function(json){
// parse the JSON data
var data = [], header, comment = /^#/, x;
jQuery.each(json.RESULT.ROWS,function(i,tweet){ ..... }
}
......
</script>
今私のNode.jsサーバーは非常に簡単です(私は」 mをエクスプレスで使用):
var app = require('express').createServer();
var express = require('express');
app.listen(3000);
app.get('/stream/aires/:id', function(req, res){
request('http://'+options.host+':'+options.port+options.path, function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body); // Print the google web page.
res.writeHead(200, {
'Content-Type': 'application/json',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Credentials': 'true'
});
res.end(JSON.stringify(JSON.parse(body)));
}
})
});
IEでクロスドメインGETを使用するにはどうすればこれらを変更できますか?私はインターネットを探していて、jQuery.support.cors = true;
のようないくつかの違いがあるようです。また、長い回避策がたくさんあるようです。
私はこのタイプのもので見つけることができた実際の理想的なデザインパターンはありません。
私はWebページとクロスドメインWebサービスの両方を制御しているので、FireFox、Opera、ChromeなどのすべてのIEバージョンでの互換性を保証するための最良の変更は何ですか?
乾杯!
http://stackoverflow.com/questions/3362474/jquery- ajax-cross-domain-calls-of-cross-domain-calls –
ありがとう、すでにこれを知っているので、私の質問はJSONPの使い方ですか?その質問でJSONPは使用されませんでした... – NightWolf
申し訳ありませんが、そのビットを逃した。この方法についてはhttp://www.giantflyingsaucer.com/blog/?p=2682をご覧ください。 'jsonp'と' jsonpCallback'プロパティを使います。サーバー側のコードでは、これらのパラメータを読み込み、データの周りに関数呼び出しをラップする必要があります。 –