Modifica intestazioni HTTP per una richiesta JSONP

Sto usando jquery per creare una richiesta all’API di ricerca di Twitter. Sto usando jsonp, come è necessario per le richieste tra domini. Tuttavia, l’API di Twitter specifica che è necessario impostare un agente utente univoco per queste richieste e limita le richieste in caso contrario. Il problema è che non vedo il modo di impostare questa intestazione via jquery.

Questo è il codice che sto usando:

$.ajax({ url: 'http://search.twitter.com/search.json', dataType: 'jsonp', type: 'get', data: { q: 'twitter' }, success: function(data) { alert(data.results); } }); 

Ho provato a utilizzare il metodo beforeSend, ma sembra che questo evento non stia funzionando. Qualcuno può trovare un modo per risolvere questo problema?

Grazie.

JSON con Padding funziona aggiungendo un elemento di script alla pagina, con l’attributo src che punta all’URL del servizio web. Il servizio Web restituisce quindi uno script contenente i dati racchiusi in una funzione di callback che viene eseguita quando lo script termina l’analisi. Non è tanto JSON (non deve nemmeno essere JSON valido, per cominciare) in quanto è Plain JavaScript.

Sfortunatamente non è ansible modificare le intestazioni inviate per un elemento di script aggiunto alla pagina. L’unica cosa che puoi fare è cercare un metodo compatibile con il recupero incrociato dei dati, come ad esempio:

  • XMLHttpRequest Livello 2 – Chrome, Safari 4+, Firefox 3.5+, Opera

     // Is XMLHttpRequest Level 2 supported? if ("withCredentials" in new XMLHttpRequest()) 
  • XDomainRequest – per IE 8, IE 9

     // Is XDomainRequest supported? if ("XDomainRequest" in window) 

Sarebbe una buona idea testare queste implementazioni se esistono e usarle di conseguenza, tornando al JSONP standard per browser non supportati o più vecchi.

È anche ansible (ma improbabile, dal momento che è di alto profilo) che il servizio web non è impostato per consentire le richieste di origine incrociata, quindi è ansible che sia necessario tornare a JSONP se la richiesta non riesce. Vedi anche, Condivisione delle risorse incrociate .

Prova questo :

 // 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); } }); }); 

L’ho trovato lì: https://groups.google.com/d/msg/google-api-javascript-client/GuFxPzqQ9-0/hZpo041UaH4J