angularjs - requests - cross origin deactivate




Kein 'Access-Control-Allow-Origin'-Header ist auf der angeforderten Ressource vorhanden-AngularJS (9)

Auf der Clientseite können Sie in AngularJS cors Anfragen über aktivieren

app.config(['$httpProvider', function($httpProvider) {
        $httpProvider.defaults.useXDomain = true;
        delete $httpProvider.defaults.headers.common['X-Requested-With'];
    }
]);

Wenn dies jedoch immer noch einen Fehler zurückgibt, würde dies bedeuten, dass der Server, auf dem Sie die Anfrage stellen, eine CORS-Anfrage zulassen muss und dafür konfiguriert werden muss.

XMLHttpRequest cannot load http://mywebservice. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:9000' is therefore not allowed access.

Ich erhalte diesen Fehler, wenn ich versuche, meinen Web-Service in meinem Code auszuführen. Ich habe versucht, darüber zu finden und habe viele Lösungen versucht, die ich gefunden habe, die ich im Netz gefunden habe. Den Code unten einfügen.

<form name="LoginForm" ng-controller="LoginCtrl" ng-submit="init(username,password,country)">
    <label>Country</label><input type="text" ng-model="country"/><br/><br/>
    <label>UserName</label><input type="text" ng-model="username" /></br></br>
    <label>Password</label><input type="password" ng-model="password">
    </br>
    <button type="submit" >Login</button>
</form>

Und Controller Form der entsprechenden js ist:

app.controller('LoginController', ['$http', '$scope', function ($scope, $http) {
    $scope.login = function (credentials) {
    $http.get('http://mywebservice').success(function ( data ) {
        alert(data);
        });
    }
}]);

Der Web-Service funktioniert einwandfrei, wenn ich ihn aus der URL-Leiste drücke. Wie kann ich das Problem lösen? Freundlich helfen!



Ersetze get mit jsonp :

 $http.jsonp('http://mywebservice').success(function ( data ) {
    alert(data);
    });
}

Es ist ein Problem auf der Serverseite. Sie müssen Ihre Clientadresse zu Ihrer Server-API hinzufügen. Wenn Sie Spring Frame arbeiten, können Sie @CrossOrgin mit org.springframework.web.bind.annotation.CrossOrigin kommentieren;

ZB: @CrossOrigin (Ursprünge = " http: // localhost: 8080 ")


Ich habe unten eine Lösung und es funktioniert für mich:

app.controller('LoginController', ['$http', '$scope', function ($scope, $http) {
$scope.login = function (credentials) {
$http({
        method: 'jsonp',
        url: 'http://mywebservice',
        params: {
            format: 'jsonp',
            callback: 'JSON_CALLBACK'
        }
    }).then(function (response) {
        alert(response.data);
    });
  }
}]);

in ' http: // mywebservice ' muss ein Callback- Parameter benötigt werden, der JSON_CALLBACK mit Daten zurückgibt .
Es gibt ein Beispielbeispiel, das perfekt funktioniert

$scope.url = "https://angularjs.org/greet.php";
    $http({
        method: 'jsonp',
        url: $scope.url,
        params: {
            format: 'jsonp',
            name: 'Super Hero',
            callback: 'JSON_CALLBACK'
        }
    }).then(function (response) {
        alert(response.data);
    });

Beispielausgabe:

{"name":"Super Hero","salutation":"Apa khabar","greeting":"Apa khabar Super Hero!"}

In meinem Fall habe ich versucht, einen WebAPI-Dienst auf localhost aus einer MVC-App heraus zu starten, die viel Angular-Code verwendet hat. Mein WebAPI-Dienst funktionierte gut mit Fiddler über http://localhost/myservice . Nachdem ich die MVC-Anwendung für die Verwendung von IIS anstelle von IIS Express (ein Teil von Visual Studio) konfiguriert hatte, funktionierte es problemlos, ohne dass in einem der Bereiche eine CORS-bezogene Konfiguration hinzugefügt wurde.




ich habe

Kein 'Access-Control-Allow-Origin'-Header ist vorhanden

und das Problem war mit der URL, die ich zur Verfügung gestellt habe. Ich habe die URL ohne eine Route zur Verfügung gestellt, zB https://misty-valley-1234.herokuapp.com/ .

Als ich einen Pfad hinzufügte, funktionierte es zB https://misty-valley-1234.herokuapp.com/messages . Mit GET-Anfragen funktionierte es in beiden Richtungen, aber mit POST-Antworten funktionierte es nur mit dem hinzugefügten Pfad.





cross-domain