私はjqueryを使用してTwitter Search APIへのリクエストを作成しています。クロスドメインリクエストに必要なjsonpを使用しています。ただし、Twitter APIは、これらのリクエストに一意のユーザーエージェントを設定する必要があることを指定し、設定しない場合はリクエストを制限します。問題は、jqueryを使用してこのヘッダーを設定する方法がないことです。
これは私が使用しているコードです:
$.ajax({
url: 'http://search.Twitter.com/search.json',
dataType: 'jsonp',
type: 'get',
data: { q: 'Twitter' },
success: function(data) {
alert(data.results);
}
});
BeforeSendメソッドを使用してみましたが、このイベントが発生していないようです。誰でもこの問題を解決する方法を思いつくことができますか?
ありがとう。
JSON with Paddingは、src属性がWebサービスのURLを指すスクリプト要素をページに追加することで機能します。次に、Webサービスは、スクリプトが解析を終了したときに実行されるコールバック関数にラップされたデータを含むスクリプトを返します。プレーンJavaScriptなので、JSONはそれほど多くありません(有効なJSONである必要はありません)。
残念ながら、ページに追加されたスクリプト要素に送信されるヘッダーを変更する方法はありません。あなたができる唯一のことは、次のようなデータを取得するクロスオリジン互換の方法をチェックすることです:
XMLHttpRequest Level 2 -Chrome、Safari 4以降、Firefox 3.5以降、Opera
// Is XMLHttpRequest Level 2 supported?
if ("withCredentials" in new XMLHttpRequest())
XDomainRequest -for IE 8、IE 9
// Is XDomainRequest supported?
if ("XDomainRequest" in window)
これらの実装が存在するかどうかをテストし、それに応じて使用することをお勧めします。サポートされていない、または古いブラウザの場合は、標準のJSONPにフォールバックします。
クロスオリジンリクエストを許可するようにWebサービスが設定されていない可能性もあります(ただし、注目度が高いため)、リクエストが失敗した場合でもJSONPにフォールバックする必要がある場合があります。 Cross-Origin Resource Sharing も参照してください。
これを試して :
// OAuth configurations
var config = {
'client_id': 'xxxxxx.apps.googleusercontent.com',
'scope': 'https://www.google.com/m8/feeds/contacts/default/full'
};
gapi.auth.authorize(config, function(data) {
// login complete - now get token
var token = gapi.auth.getToken();
token.alt = 'json';
// retrieve contacts
jQuery.ajax({
url: 'https://www.google.com/m8/feeds/contacts/default/full/?max-results=999999',
dataType: 'jsonp',
data: token,
success: function(data) { successGmail(data); }
});
});
私はそれをそこに見つけました: https://groups.google.com/d/msg/google-api-javascript-client/GuFxPzqQ9-0/hZpo041UaH4J