Ich mache eine Abfrage an einen Webdienst mit jQuery AJAX. Meine Abfrage sieht wie folgt aus:jQuery AJAX-Aufruf führt zu Fehlerstatus 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
});
Als ich dies ausführen, erhalte ich einen Statusfehler von 403. Ich verstehe nicht, warum mein Anruf ergibt, die den Statuscode 403. ich die Kontrolle über die Sicherheit bin auf mein Service und es ist als weit offen markiert. Ich weiß, dass der Schlüssel gültig ist, weil ich ihn in einem anderen Anruf verwende, der funktioniert. Hier ist der Anruf, der funktioniert:
Ich weiß, das sind zwei verschiedene Endpunkte. Aber ich bin zu 100% überzeugt, dass dies kein serverseitiger Authentifizierungs- oder Berechtigungsfehler ist. Wieder ist alles serverseitig offen. Was bedeutet, dass ich auf meiner Client-Seite einen Fehler mache.
Ich glaube, ich sollte mitteilen, dass diese Anforderung während der Entwicklung gestellt wird. Also, ich führe das von http://localhost:3000. Aus diesem Grund habe ich sofort angenommen, dass es sich um ein CORS-Problem handelt. Aber alles sieht korrekt aus. Die Tatsache, dass meine POST-Anfrage funktioniert, aber mein GET hat mich nicht absolut frustriert. Fehle ich etwas? Was könnte es sein?
Haben Sie sogar versucht, diese URL direkt in Ihrem Browser zu öffnen? Vermissen Sie den '/ data /' Teil der URL, um mit dem zu funktionieren, der funktioniert? – charlietfl
Beachten Sie, dass Sie keine Header für 'jsonp' Anfrage senden können, es ist eine Skriptanfrage. Bist du sicher, dass du 'jsonp' und nicht' json' willst? Auch warum 'JSON.stringify()' für Header? GET hat keine Anfrage 'contentType'. da kein Körperinhalt gesendet wird. Sie haben zahlreiche Probleme, von denen jedes Problem sein kann – charlietfl
@charlietfl Ich habe versucht, im Browser zu öffnen. Ich kenne keinen '/ data /' -Teil, den ich einbeziehen muss. Ich muss nur die "Version" und den "API-Schlüssel" eingeben. Ich nahm an, dass ich den 'api-Schlüssel' als Kopfzeile verwenden sollte. Muss ich die Eigenschaften 'data' und' contentType' auf 'jsonp' setzen? Dies scheint ein einfacher Anruf zu sein. Aber klar, ich vermassle es und übersehe etwas. Wie sollte der richtige Anruf aussehen? –