2017-02-03 2 views
0

Ich brauche einige Einsichten, die Folgendes verstehen: Ich versuche, Aufrufe an eine externe API zu machen, wo ich keine Kontrolle über den Server habe. Anbieter stellen mir ein statisches X-Auth-Token zur Verfügung.Unterschiede in Antwortheadern verstehen

Mit einem PHP-Skript, das ich bin in der Lage JSON Array abzurufen, wie erwartet:

$headers = array(); 
$headers[] = 'X-Auth-Token:myValidKeyString'; 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 

Nun möchte Ich mag die API von Client-Seite mit Ajax-Aufruf für den Zugriff auf und vielleicht einzubetten, dass in Angular. Aber hier ist, was ich bekomme.

Wenn ein Testmodul (DHC von Restlet in Chrome) Mit Anfrage Werke erhalten und zurück 200 und die folgenden Antwort-Header:

Cache-Control:no-cache, no-store, max-age=0, must-revalidate 
Connection:keep-alive 
Content-Type:application/json;charset=utf-8 
Date:Fri, 03 Feb 2017 08:21:49 GMT 
Expires:0 
Pragma:no-cache 
Server:Apache-Coyote/1.1 
transfer-encoding:chunked 
X-Application-Context:application:qa:8080 
X-Content-Type-Options:nosniff 
X-Frame-Options:DENY 
X-XSS-Protection:1; mode=block 

Mit folgenden Anforderungs-Header:

Accept:*/* 
Accept-Encoding:gzip, deflate, sdch, br 
Accept-Language:en-US,en;q=0.8,fr;q=0.6 
Connection:keep-alive 
DNT:1 
Host:myApihost.com 
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36 
X-Auth-Token:my-key-string 

Dann mit der folgenden Funktion

$.ajax({ 
    type: 'GET', 
    url: 'myApihost.com', 
    headers: {'X-Auth-Token' : 'my-key-string'}, 
    success: function (dxddata) { 
     console.log(dxddata); 
    } 
}); 
wiederum

Stand 401 mit Antwortheader:

Cache-Control:no-cache, no-store, max-age=0, must-revalidate 
Connection:keep-alive 
Content-Length:55 
Content-Type:application/json;charset=utf-8 
Date:Fri, 03 Feb 2017 08:58:25 GMT 
Expires:0 
Pragma:no-cache 
Server:Apache-Coyote/1.1 
X-Content-Type-Options:nosniff 
X-Frame-Options:DENY 
X-XSS-Protection:1; mode=block 

und Request-Header an:

Accept:*/* 
Accept-Encoding:gzip, deflate, sdch, br 
Accept-Language:en-US,en;q=0.8,fr;q=0.6 
Access-Control-Request-Headers:x-auth-token 
Access-Control-Request-Method:GET 
Connection:keep-alive 
DNT:1 
Host:myApihost.com 
Origin:null 
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36 

Wie kann ich in und die Header-X-Auth-Token:my-key-string ordnungsgemäß übergeben nennen?

Nicht ich deaktiviere das CORS-Steuerelement, um zu diesem Zeitpunkt Cross Origine Fehler zu vermeiden.

Antwort

0

CORS muss auf dem Server, Host-Apis behandelt werden. Sie können diese Sicherheitsbeschränkung nicht selbst auf dem Client umgehen. Wenn Sie einen Test an Ihrer Maschine durchführen möchten, können Sie versuchen, eine CORS-Chrome-Erweiterung wie diese https://chrome.google.com/webstore/detail/cors-toggle/omcncfnpmcabckcddookmnajignpffnh zu installieren. Andernfalls müssen Sie den Anruf von Ihrer Serverseite aus tätigen.

+0

Dank @Francesco, verwende ich bereits diese Erweiterung. Es verhindert, dass ich gegen die Kreuzursprungspolitik ankämpfe. Mein Problem hier ist, wie man das "X-Auth-Token" als Header-Schlüsselwörter übergibt. Wie es derzeit in "Access-Control-Request-Header" endet – Benoit

Verwandte Themen