jsonpリクエストの作成に問題はありませんが、jsonpでレスポンスを送信するためのWebサービスの設定については不明です。静的なjsonpレスポンスのテスト
まず、jsonpリクエストを許可するためにサーバーを特定の方法で構成する必要がありますか、またはページの応答が適切にフォーマットされていなければなりませんか?私のテストで
私はgeonames.orgから次のJSONP応答(私は何もしてサーバー/ドメイン1にそれを空白のページを配置した)があります。サーバー上で
<?php echo $_GET['callback'];?>({"postalcodes":[{"adminName2":"Westchester","adminCode2":"119","postalcode":"10504","adminCode1":"NY","countryCode":"US","lng":-73.700942,"placeName":"Armonk","lat":41.136002,"adminName1":"New York"}]});
/ドメインI「は2以下の要求を行っメートル:私は、同じサーバ(ドメイン1または2のいずれか)の上にファイルを配置し、定期的なJSONの要求にそれを回すとき
$.ajax({
// works when I make the call to geonames.org instead of domain1
//url: 'http://www.geonames.org/postalCodeLookupJSON?postalcode=10504&country=US&callback=?',,
url: 'http://www.domain1.com/test/jsonp.php?callback=?',
success: function(data) {
$('#test').html(data);
},
});
呼び出しが動作します。私は間違って何をしていますか?
私の質問は、リクエストを受け取ったページに関するものです。私はgeonames.org、flickr、etc ... apisにリクエストを行うとリクエストが動作することを知っています。しかし、私は応答を送るためにページを設定しようとしています。私の例では、ハードコーディングされたjsonpの空白のページしかありません。私はページ上に他のヘッダを持っていなければならないのか、私のサーバ上で何かを有効にしなければならないかどうかはわかりません。
は発信者であり、サーバーは同じドメインに存在しますか? – kobe
@gov、そうではありません。私の例では、3つの異なるサーバー(およびドメイン)を使用しています。 geonames.orgのデータを要求するドメイン1が動作します。 geonames.orgからの応答をドメイン2の空白のページに置き、ドメイン1からドメイン2へ同じ要求を行うことは機能しません。これを逆にしてドメイン2からドメイン1への要求と同じです。 – Choy
アクセス制御ヘッダーを追加して動作させる必要がありました:header( 'Access-Control-Allow-Origin:*'); (PHPで) – Choy