Twitter Search API へのリクエストを作成するために jQuery を使用しています。クロスドメイン リクエストに必要な jsonp を使用しています。ただし、Twitter API では、これらのリクエストに一意の User-Agent を設定する必要があると指定されており、設定しない場合はリクエストが制限されます。問題は、jQuery 経由でこのヘッダーを設定する方法が見つからないことです。
私が使用しているコードは次のとおりです:
$.ajax({
url: 'http://search.twitter.com/search.json',
dataType: 'jsonp',
type: 'get',
data: { q: 'twitter' },
success: function(data) {
alert(data.results);
}
});
beforeSend メソッドを使用してみましたが、このイベントは発生していないようです。この問題を解決する方法を誰か思いつきますか?
ありがとう。
ベストアンサー1
パディング付きJSONはページにスクリプト要素を追加することで機能します。ソース属性は、Web サービスの URL を指します。Web サービスは、スクリプトの解析が終了したときに実行されるコールバック関数でラップされたデータを含むスクリプトを返します。これは JSON というよりは (そもそも有効な JSON である必要すらありません)、プレーンな JavaScript です。
残念ながら、ページに追加されたスクリプト要素に送信されるヘッダーを変更する方法はありません。唯一できることは、次のようなクロスオリジン互換のデータ取得方法を確認することです。
XMLHttpRequest レベル 2- Chrome、Safari 4+、Firefox 3.5+、Opera
// Is XMLHttpRequest Level 2 supported? if ("withCredentials" in new XMLHttpRequest())
Xドメインリクエスト- IE 8、IE 9の場合
// Is XDomainRequest supported? if ("XDomainRequest" in window)
これらの実装が存在する場合はテストし、それに応じて使用し、サポートされていないブラウザーや古いブラウザーの場合は標準の JSONP にフォールバックすることをお勧めします。
また、Web サービスがクロスオリジン リクエストを許可するように設定されていない可能性もあります (ただし、これは注目度が高いため、可能性は低いです)。そのため、リクエストが失敗した場合は、JSONP にフォールバックする必要がある可能性があります。クロスオリジンリソース共有。