2017-02-05 3 views
0

Ich versuche, eine GET-Anfrage an Cloudflare API zu senden. Ich muss auch einige Header senden, die X-Auth-Email und X-Auth-Key sind. Wenn ich diese entweder mit headers als Objekt oder innerhalb beforeSend: function(xhr) hinzufüge, gibt Cloudflare immer noch eine Fehlermeldung, dass ich die Header fehlt.Header ist gesendet, aber Antwort sagt Header fehlt

Dies ist, wie die cURL Anfrage aussehen könnte (und es funktioniert):

curl -s -X GET "https://api.CloudFlare.com/client/v4/zones?name=DOMAIN.COM&status=active&page=1&per_page=20&order=status&direction=desc&match=all" \ 
-H "X-Auth-Email: [email protected]" \ 
-H "X-Auth-Key: 1234567890" \ 
-H "Content-Type: application/json" 

Dies ist, wie mein $.ajax() aussieht (und ja, es tut Standard-GET):

$.ajax({ 
    url: "https://api.CloudFlare.com/client/v4/zones?name=DOMAIN.COM&status=active&page=1&per_page=20&order=status&direction=desc&match=all", 
    dataType: "jsonp", 
    contentType: 'application/json', 
    headers: { 
     "X-Auth-Email": "[email protected]", 
     "X-Auth-Key": "1234567890", 
     "Content-Type": "application/json" 
    }, 
    beforeSend: function(xhr) { 
     xhr.setRequestHeader("X-Auth-Email", "[email protected]"); 
     xhr.setRequestHeader("X-Auth-Key", "1234567890"); 
     xhr.setRequestHeader("Content-Type", "application/json"); 
    } 
}).done(function(data) { 
    console.log(data); 
}); 

Als ich dann die Anforderung senden, dies wird der Ausgang I erhalten:

{ 
    "success": false, 
    "errors": [{ 
     "code": 9106, 
     "message": "Missing X-Auth-Email header" 
    }, { 
     "code": 9107, 
     "message": "Missing X-Auth-Key header" 
    }], 
    "messages": [], 
    "result": null 
} 

Was mache ich falsch hier tun ?

+0

Versuchen Sie, die Anfrage zu prüfen und zu sehen, was tatsächlich gesendet wird. jQuery wird höchstwahrscheinlich die Header in Kleinbuchstaben setzen, aber das sollte egal sein, sie sollten nicht zwischen Groß- und Kleinschreibung unterscheiden, es sei denn, Cloudfare versagt. Die Verwendung von Großbuchstaben in der URL scheint jedoch seltsam, warum ist der Domain-Name nicht Kleinbuchstaben * (nicht dass es zählt, aber immer noch?) *. – adeneo

+0

@adeneo Der Grund, warum die Variablen in Großbuchstaben geschrieben sind, ist einfach, Ihnen zu zeigen, wer gerade gesendet wird. In der Anwendung ist alles Kleinbuchstaben. – MortenMoulder

+0

Entfernen Sie 'dataType:" jsonp "', es ignoriert die Header und fügt ein Skript-Tag ein, nicht das, was Sie für diese Anfrage verwenden möchten. – adeneo

Antwort

0

Ich denke, Sie setzen Ihre Header zweimal. Sie sollten "headers" oder "beforeSend" verwenden, um Ihre Header festzulegen, nicht beide gleichzeitig.

+1

Das ist definitiv nicht das Problem. – MortenMoulder