2017-02-25 5 views
1

Ich habe den Code-Daten aus der URL zu erhalten, aber halten 401 Unauthorized Fehler und Antwort für Preflight hat immer ungültige HTTP-Statuscode 401401 Unbefugter Zugriff auf URL

prüfe ich habe das Passwort und Benutzer und beide sind wenn ich die uRL korrekt ist, öffnen Sie im Browser ich bin für Benutzer und Passwort gefragt werden, einfach nicht das passiert mit dem Skript, kann mich in der richtigen Richtung zeigen, was ich falsch bitte

var btn = document.getElementById("btn"); 

if (btn){ 
btn.addEventListener("click", function() { 
var ourRequest = new XMLHttpRequest(); 
      ourRequest.open('GET','https://domain.com/services/rest/getAllLocations','true'); 

ourRequest.setRequestHeader("Authorization", "Basic user:password"); 
ourRequest.withCredentials = false; 


ourRequest.onload = function() { 
    if (ourRequest.status >= 200 && ourRequest.status <400) { 
    var data = JSON.parse (ourRequest.responseText); 
    createHTML(data); 
    }else { 
    console.log("We connected to the server, but it returned an error"); 
    } 
}; 

ourRequest.onerror = function() { 
console.log("Connection Error"); 
}; 

ourRequest.send(); 

}); 
} 

Antwort

0

Siehe https://xhr.spec.whatwg.org/#the-withcredentials-attribute:

Auf c ross-origin Anfrage müssen Sie withCredentials=true setzen, um die Autorisierungsheader tatsächlich zu senden.

Darüber hinaus sehen https://www.html5rocks.com/en/tutorials/cors/#toc-making-a-cors-request:

Damit dies der Server funktioniert, müssen auch Anmeldeinformationen ermöglichen, indem die Access-Control-Allow-Credentials Header Antwort auf „true“. Details finden Sie im Serverbereich.

Das heißt: Der Fehler bedeutet, dass der Server nicht möchte, dass Sie diese Ressource in einer Cors-Anfrage verwenden.

+0

Danke für die Info, leider habe ich nicht ha Zugriff auf den Server, um Einstellungen zu ändern, gibt es keine andere Möglichkeit, dies zu tun? – Andy

+0

Kann ich nicht sagen. Ich würde die vollständigen Listen der Anforderungs- und Antwortheader benötigen.Vielleicht müssen Sie nur einen korrekten 'Origin'-Header hinzufügen. Dann gibt es in einigen Browsern Möglichkeiten, diese Sicherheitsmaßnahmen zu ignorieren (z. B. zum Debuggen), aber Sie sollten sie nicht regelmäßig verwenden. Außerdem können Sie nicht darauf zählen, dass Ihre Benutzer diese aktiviert haben. Dann besteht die Möglichkeit, einen eigenen Server als Proxy zu verwenden (hackish). – nCessity

0

Ich hatte es als wahr gesetzt, aber es diesen Fehler erbrechen

Antwort auf Preflight-Anfrage nicht Zugriffskontrolle Prüfung bestehen: Der Wert der ‚Access-Control-Allow-Origin‘ Header in der Antwort darf nicht der Platzhalter '*' sein, wenn der Anmeldemodus der Anfrage 'include' ist. Origin 'null' ist daher nicht erlaubt. Der Anmeldemodus von Anforderungen, die von XMLHttpRequest ausgelöst werden, wird vom Attribut withCredentials gesteuert.

0

Antwort-Header Cache-Control: no-cache, no-store, max-age = 0, must-revalidate Content-Encoding: gzip Content-Language: en Content-Type: text/html; charset = utf-8 Datum: So, 26. Februar 2017 13.35.31 GMT Gültig bis: 0 Pragma: no-cache Server: APPSERVER Set-Cookie: JSESSIONID = 2E4E1646F86E767F4C43D1FE75718D5BF841409F980B163B16919E; Pfad =/services /; Sichern; HttpOnly Strict-Transport-Sicherheit: max-age = 31536000; includeSubDomains Transfer-Encoding: Chunked Vary: Accept-Encoding WWW-Authenticate: Basic-realm = "Spring Security Application" X-Content-Type-Optionen: NOSNIFF X-Frame-Options: DENY X-XSS-Schutz : 1; mode = Block

Anforderungs-Header akzeptieren: / Accept-Encoding: gzip, deflate, sdch, br Accept-Language: en-US, en; q = 0,8 Access-Control-Request-Header: Genehmigung Access-Control-Request-Methode: Verbindung GET: keep-alive Host: hpdomain.com Herkunft: http://evil.com/ User-Agent: Mozilla/5.0 (Windows NT 6.3, Win64, x64) AppleWebKit/537,36 (KHTML, wie Gecko) Chrome/56.0.2924.87 Safari/537.36

Verwandte Themen