Sto effettuando una query a un servizio Web utilizzando jQuery AJAX. La mia domanda è simile al seguente:jQuery La chiamata AJAX risulta in stato di errore 403
var serviceEndpoint = 'http://example.com/object/details?version=1.1';
$.ajax({
type: 'GET',
url: serviceEndpoint,
dataType: 'jsonp',
contentType: 'jsonp',
headers: { 'api-key':'myKey' },
success: onSuccess,
error: onFailure
});
Quando eseguo questo, ottengo un errore di stato di 403. Non capisco il motivo per cui i miei risultati di chiamata ad avere il codice di stato 403. Sono nel controllo della sicurezza sul il mio servizio ed è contrassegnato come spalancato. So che la chiave è valida, perché la sto usando in un'altra chiamata, che funziona. Ecco la chiamata che funziona:
var endpoint = 'http://example.com/object/data/item?version=1.1';
$.ajax({
type: 'POST',
url: endpoint,
cache: 'false',
contentType:'application/json',
headers: {
'api-key':'myKey',
'Content-Type':'application/json'
},
data: JSON.stringify({
id: 5,
count:true
}),
success: onDataSuccess,
error: onDataFailure
});
So che si tratta di due endpoint diversi. Ma sono convinto al 100% che non si tratta di un'autenticazione lato server o di un errore di autorizzazione. Ancora una volta, tutto è completamente aperto sul lato server. Il che implica che sto facendo un errore sulla mia richiesta lato client.
Sento che dovrei comunicare che questa richiesta viene fatta durante lo sviluppo. Quindi, sto eseguendo questo da http://localhost:3000. Per questo motivo, ho immediatamente pensato che si trattasse di un problema CORS. Ma tutto sembra corretto. Il fatto che la mia richiesta POST funzioni, ma il mio GET non mi ha assolutamente frustrato. Mi sto perdendo qualcosa? Cosa potrebbe essere?
Hai provato a aprire l'URL direttamente nel tuo browser? Ti manca la parte '/ data /' dell'URL per abbinare quella che funziona? – charlietfl
Si noti che non è possibile inviare intestazioni per la richiesta 'jsonp', si tratta di una richiesta di script. Sei sicuro di volere 'jsonp' e non' json'? Anche perché 'JSON.stringify()' per le intestazioni? GET non ha richieste 'contentType'. dal momento che non viene inviato alcun contenuto corporeo. Hai numerosi problemi ognuno dei quali può essere un problema – charlietfl
@charlietfl Ho provato ad aprire nel browser. Non ho familiarità con nessuna parte di '/ data /' che devo includere. Ho letteralmente bisogno di passare in 'version' e' api-key'. Supponevo che avrei dovuto inserire 'API-key' come intestazione. Devo impostare le proprietà 'data' e' contentType' su 'jsonp'? Sembra che dovrebbe essere una semplice chiamata. Ma chiaramente, sto sbucciando e trascurando qualcosa. Come dovrebbe apparire la chiamata corretta? –