2016-07-12 12 views
3

Unten ist mein Service-Aufruf, wo ich versuche, eine grundlegende Auth zu tun. Ich habe überprüft, dass mehrere Blogs keine Lösung dafür finden konnten.XMLHttpRequest kann nicht geladen werden .... Antwort für Preflight hat ungültigen HTTP-Statuscode 401

Kann jemand mir helfen, dieses Problem zu lösen, wie ich weiter unten Störung erhalte:

XMLHttpRequest cannot load

Response for preflight has invalid HTTP status code 401

ich nicht die Basis Authentifizierung im Netzwerk-Registerkarte in Entwickler-Optionen auch gefunden.

function() { 
    "use strict"; 
    var APIservice = function($http, $base64) { 
     var getDetails = function(postData) { 
      $http.defaults.headers.common['Access-Control-Allow-Origin'] = "*"; 
      $http.defaults.headers.common['Access-Control-Allow-Methods'] = "GET,PUT,POST,DELETE,OPTIONS"; 
      $http.defaults.headers.common['Access-Control-Allow-Headers'] = "Content-Type, Authorization, Content-Length, X-Requested-With"; 
      $http.defaults.headers.common['Content-Type'] = undefined; 
      console.log($http.defaults.headers.common.Authorization); 
      //console.log($http.defaults.headers.common.Authorization); 
      return $http.get('http://52.74.68.202:8080/rest/v1/step/all') 
       .then(function(response, headers, config) { 
        console.log(response); 
        return response; 
       }); 
     }; 
     return { 
      getDetails: getDetails 
     } 
    } 
    var module = angular.module('expframework'); 
    module.factory("APIservice", APIservice); 
    module.run(['$http', '$base64', function($http, $base64) { 
     var authdata = $base64.encode('test:test'); 
     $http.defaults.headers.common['Authorization'] = 'Basic ' + authdata; 
    }]); 
    module.config(['$httpProvider', '$base64', function($httpProvider, $base64) { 
     var authdata = $base64.encode('test:test'); 
     $httpProvider.defaults.headers.common['Authorization'] = 'Basic ' + authdata; 
    }]) 
}(); 

Es funktioniert in Safari und Emulatoren aber funktioniert nicht in Chrome und Firefox

Bitte helfen Sie mir, dies zu beheben. Danke im Voraus.

+0

CORS-Header darf nicht von Browsern, sondern von Servern eingestellt werden: Browser sendet dann zuerst einen OPTIONS bekannten verlangen, wenn tatsächliche Anforderung autorisiert ist. Welche Art von Server hört auf http://52.74.68.202:8080/rest? Sieht wie ein Tomcat aus? – sp00m

+0

Haben Sie CORS auf Ihrem Server aktiviert? Sie müssen die OPTIONS Preflight-Anfrage haben, um Zugriff zu haben. –

+0

@ sp00m - Ja, es ist Tomcat und unten ist die Antwortheader Access-Control-Erlaube-Header: Autorisierung, Inhaltstyp, X-Token Access-Control-Allow-Methoden: POST, PUT, GET, OPTIONS, DELETE Access-Control-Allow-Origin: * Access-Control-Expose-Headers: Nachricht Access-Control-Max-Alter: 3600 Allow: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH cache- Steuerung: no-cache, no-store, max-age = 0, muss revalidieren Content-Length: 0 Datum: Di., 12.07.2016 10:34:14 GMT Pragma: no-cache Server: Apache- Coyote/1.1 WWW-Authenticate: Basic Realm = "IntApp-Basic" –

Antwort

Verwandte Themen