2016-10-04 2 views
0

Ich versuche, einen einfachen wiederkehrenden API-Client zu implementieren, um mit Testzwecken eine lokale HTML-Seite zu erstellen.Implementieren eines API-Restclients, der JavaScript verwendet, gibt 404 zurück, wenn der Autorisierungsheader hinzugefügt wird

Ich bin hart codieren die Anfrage in Javascript und mit XMLHttpRequest, um die Nachbearbeitung zu tun.

var client = new XMLHttpRequest(); 
client.open("POST", "https://subdomain.recurly.com/v2/accounts", true); 
client.setRequestHeader("Authorization", "Basic " + "API Key"); 
client.send([XML Request Here]); 

Der Code wird Rückkehr 404.

Aber wenn ich

client.setRequestHeader("Authorization", "Basic " + "API Key"); 

Der Code 401 auf Kommentar (unberechtigten) zurückkehrt, was bedeutet, dass der Endpunkt vorhanden ist, aber es gibt ein Problem mit Festlegen des Autorisierungsheaders

Edit: Ich habe die Methode für die 404-Anfrage überprüft und es ist OPTIONS statt POST, ist das aufgrund der gleichen Herkunft Politik?

Jede Hilfe wird geschätzt.

Vielen Dank.

+0

gut ... haben Sie überprüfen in den Entwickler-Tools, wenn Sie Ihre Anfrage korrekt aussieht? 404 ist theoretisch eine gültige Antwort für einen Restdienst, falls Ihre Ressource nicht zugeordnet ist. –

+0

Ich schickte eine ähnliche Anfrage mit cURL und es gab einen Erfolg XML zurück. – user6921220

+0

Dann sollten Sie das gleiche Ergebnis erhalten. Es ist sehr schwierig, "ähnlich" zu einer sehr einfachen POST-Anfrage mit einem einzigen Berechtigungs-Header zu vergleichen. –

Antwort

0

POST-Anfragen mit bestimmten Inhaltstypen sollten keine Pre-Flight-Anfragen generieren. Setzen Sie diese ein:

application/x-www-form-urlencoded

client.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 

Send POST data using XMLHttpRequest

+0

Vielen Dank für Ihre Antwort, leider erzeugt es immer noch den 404 Fehler. – user6921220

+0

können Sie sehen, ob andere Header zur Anfrage hinzugefügt werden? Was ist der Inhalt der Anfrage in den Entwicklertools des Browsers? –

+0

Vielen Dank für Ihre Nachricht. Ich habe bestätigt, dass die gleiche Herkunftspolitik der Grund dafür ist. Ich habe IE 8 verwendet (was nicht die gleiche Ursprungsrichtlinie erzwingt) und die Anfrage ging durch. Ich versuche gerade, einen Weg zu finden, die gleiche Herkunftsrichtlinie in modernen Browsern zu umgehen. – user6921220

Verwandte Themen