2017-10-19 1 views
1

Ich bin völlig neu für AngularJS und basierte Authentifizierungs-Token. Eigentlich möchte ich AngularJS Framework als mein Front-End verwenden während API als Back-End. So habe ich ein Tutorial aus dem Internet gefolgt und habe meinen Code in https://github.com/mmSebastian/angularjsWebAPI beigefügt.(Grund: CORS-Header ‚Access-Control-Allow-Origin‘ stimmt nicht überein ‚(null)‘)

Wenn ich versuche, meine Web-App anmelden, stehen ich unten Fehler in meinem Browser:

  • Firefox

Cross-Origin-Anforderung blockiert: Die Same Origin Policy verweigert das Lesen der Remote-Ressource an http: // localhost: 50987/Token. (Grund: CORS-Header 'Access-Control-Allow-Origin' stimmt nicht mit '(null)' überein).

  • Chrome

fehlgeschlagen http laden: // localhost: 50987/token: Die "Access-Control-Allow-Origin-Header mehrere Werte enthält '*, *', aber nur eine ist dürfen. Herkunft "http: // localhost: 52386" ist daher nicht erlaubt.

  • Rand

SEC7128: Multiple Access-Control-Allow-Origin-Header sind für CORS Antwort nicht erlaubt.

Aber es funktioniert gut, wenn ich http laufen: // localhost: 50987/Token durch Postman.

Ich habe unter Links versucht, aber immer noch nicht lösen konnte. Bitte helfen Sie mit.

  1. Angularjs: Why does adding an authorization header cause a -1 status response?

  2. MVC web api: No 'Access-Control-Allow-Origin' header is present on the requested resource

+0

Willkommen bei Stackoverflow, würde ich sehr empfehlen Sie gehen durch [diese] (https://stackoverflow.com/help/mcve) Ihre Frage zu verbessern, was wiederum die Chancen auf eine richtige Antwort zu erhöhen. – McMutton

+0

Können Sie uns bitte sagen, welchen Wert der Origin-Header hat, den Ihr Client an den Server sendet? – McMutton

+0

@McMutton Es tut mir leid für meine Sprache. Der Client wäre http: // localhost: 52386, während der Server http: // localhost: 50987 wäre. Kann ich konnte nicht gut ausdrücken, also habe ich den Code beigefügt. – mmSebastian

Antwort

0

CORS (cross origin) erfordert eine vom Browser genau wie der Server die gleiche Domäne vorgenommen HTTP-Anforderung.

z.B. eine Anfrage von localhost: 8080 localhost: 8080 wird

arbeiten

z.B. eine Anfrage von localhost: 8080 zu localhost: 8081 wird

NICHT

arbeiten und Sie werden einen CORS-Fehler. Dies wird nur vom Browser erzwungen und somit funktioniert POSTMAN gut. können hinzufügen, müssen anderen Access-Control--Header auf dem Server hinzufügen

Um das Problem zu beheben, die entsprechenden CORS-Header auf dem Server z.B .:

Access-Control-Allow-Origin: * 

Sie.

Alternativ können Sie Ihren Webserver Proxy bestimmte Anfragen direkt an Ihre Backend erhalten damit CORS Durchsetzung im Browser umgangen wird.

+0

danke für ihre information. Ich habe die relevanten CORS-Header hinzugefügt, aber scheint nicht zu funktionieren. Ich habe meinen Code an https://github.com/mmSebastian/angularjsWebAPI angefügt. Würde es dir etwas ausmachen, mich zu korrigieren, wo habe ich falsch gemacht? – mmSebastian