Wie erstellt domänenübergreifende Anfrage mit Angular 2? Können Sie ein Beispiel geben? Anfrage zwischen localhost: 3000 und localhost: 8000 Cross-Domain? Danke.Wie erstelle ich eine domainübergreifende Anfrage (Angular 2)?
Antwort
Tatsächlich gibt es in Angular2 nichts, was domänenübergreifende Anfragen betrifft. CORS wird von Browsern nativ unterstützt. Dieser Link könnten Ihnen helfen zu verstehen, wie es funktioniert:
- http://restlet.com/blog/2015/12/15/understanding-and-using-cors/
- http://restlet.com/blog/2016/09/27/how-to-fix-cors-problems/
kurz zu sein, im Fall von Cross-Domain-Anfrage, fügt der Browser automatisch ein Origin
-Header in der Anfrage . Es gibt zwei Fälle:
- Einfache Anfragen. Dieser Anwendungsfall gilt, wenn wir die Methoden HTTP GET, HEAD und POST verwenden. Im Fall von POST-Methoden werden nur Inhaltstypen mit den folgenden Werten unterstützt:
text/plain
,application/x-www-form-urlencoded
undmultipart/form-data
. - Vorbeleuchtete Anfragen. Wenn der Anwendungsfall "Einfache Anforderungen" nicht zutrifft, wird eine erste Anforderung (mit der HTTP OPTIONS-Methode) ausgeführt, um zu prüfen, was im Zusammenhang mit domänenübergreifenden Anforderungen durchgeführt werden kann.
In der Tat muss die meiste Arbeit auf der Serverseite getan werden, um die CORS-Header zurückzugeben. Der wichtigste ist der Access-Control-Allow-Origin
.
Um solche Probleme zu beheben, können Sie Entwickler-Tools in Browsern (Registerkarte Netzwerk) verwenden.
In Bezug auf Angular2, verwenden Sie einfach die Http
Objekt wie alle anderen Anfragen (gleiche Domain zum Beispiel):
return this.http.get('https://angular2.apispark.net/v1/companies/')
.map(res => res.json()).subscribe(
...
);
Für mich ist es ein weiteres Problem war. Das könnte für einige trivial sein, aber ich brauchte eine Weile, um es herauszufinden. Diese Antwort könnte für einige hilfreich sein.
Ich hatte meine API_BASE_URL
auf localhost:58577
gesetzt. Die Münze löste sich nach dem milliardsten Lesen der Fehlermeldung. Das Problem ist in dem Teil, wo es besagt, dass es nur HTTP
und einige andere Protokolle unterstützt. Ich musste das API_BASE_URL
so ändern, dass es das Protokoll einschließt. So änderte API_BASE_URL
zu http://localhost:58577
es funktionierte perfekt.
Es ist nichts, was Sie auf der Client-Seite tun können. Ich habe @CrossOrigin
in den Controller auf der Serverseite hinzugefügt und es funktioniert.
@RestController
@CrossOrigin(origins = "*")
public class MyController
Bitte beziehen Sie sich auf docs.
Lin
Ich bin nicht sicher, ob das OP nach Java, Spring oder REST fragt, aber was auch immer, ich füge eine Antwort hinzu, weil:/ – ochi
Spring RestController @CrossOrigin (origins = "*") einwandfrei funktioniert. Vielen Dank. Sie können es @RestController hinzufügen, um den Zugriff auf alle REST-APIs zu ermöglichen –
Danke, dude..Sie haben mich nach einer langen Suche nach Problem zum Lächeln gebracht. :) – 0991
@RestController
@RequestMapping(value = "/profile")
@CrossOrigin(origins="*")
public class UserProfileController {
SpringREST bietet @CrossOrigin Annotationen wo (Ursprüngen = "*") aus jeder Quelle Zugriff auf REST APIS ermöglichen.
Wir können es der jeweiligen API oder dem gesamten RestController hinzufügen.
Viele lange (und korrekte) Antworten hier. Aber normalerweise werden Sie diese Dinge nicht manuell tun - zumindest nicht, wenn Sie Ihre ersten Projekte für die Entwicklung einrichten (hier stolpern Sie normalerweise über diese Dinge). Wenn Sie koa für das Backend verwenden: Verwenden Sie koa-cors. Installieren Sie über npm ...
npm install --save koa-cors
... und verwenden Sie es im Code:
const cors = require('koa-cors');
const Koa = require('koa');
const app = new Koa();
app.use(cors());
Problem gelöst.
Nach meiner Erfahrung arbeitete die Plugins mit http, aber nicht mit dem neuesten httpClient. Auch die Konfiguration der CORS-Antwort-Header auf dem Server war nicht wirklich eine Option. Also habe ich eine proxy.conf.json-Datei erstellt, die als Proxy-Server fungiert.
mehr das Lesen Sie hier: https://github.com/angular/angular-cli/blob/master/docs/documentation/stories/proxy.md
unten ist mein prox.conf.json Datei
{
"/posts": {
"target": "https://example.com",
"secure": true,
"pathRewrite": {
"^/posts": ""
},
"changeOrigin": true
}
}
ich die proxy.conf.json Datei direkt neben der die package.json platziert Datei im selben Verzeichnis
dann änderte ich den Startbefehl in der package.json Datei wie unten
"start": "ng serve --proxy-config proxy.conf.json"
jetzt ist der http Anruf von meiner App-Komponente als
return this._http.get('/posts/pictures?method=GetPictures')
.subscribe((returnedStuff) => {
console.log(returnedStuff);
});
folgt schließlich meine app zu laufen, würde ich npm verwenden beginnen oder ng dienen --proxy -config proxy.conf.json
- 1. Domainübergreifende JSON-Anfrage?
- 2. Anfrage erneut senden angular 2
- 3. JSONP Anfrage Fehler Angular 2
- 4. Wie feuern Sie eine Ajax-Anfrage in Angular 2?
- 5. Wie kann ich domainübergreifende PostMessage durchführen?
- 6. Angular 2 Loader auf jeder HTTP-Anfrage
- 7. Wie erstelle ich eine POST-Anfrage mit Formularfeldinhalt mit Spray?
- 8. Wie erstelle ich eine SOAP-Anfrage mit SOAPpy?
- 9. Wie erstelle ich tatsächlich eine Verteilungs-App von Angular 2 RC4 + Typescript + systemjs App?
- 10. Angular 2: Wie eine Rückruf anzuwenden, wenn ich eine Route
- 11. Wie erstelle ich eine Verbindung zu den 2 Mysql Servern?
- 12. Wie erstelle ich eine Gemfile?
- 13. Wie kann ich eine Angular 2-Komponente zwischen mehreren Angular 2-Projekten teilen?
- 14. Wie führt man eine domainübergreifende HTTP-Anfrage in Ionic Framework auf Android durch?
- 15. Wie starte ich eine neue Zeile in Angular 2 Templat
- 16. Wie führe ich eine Formularvalidierung in Angular durch? 2
- 17. Angular 2 Wie setze ich strictBounds
- 18. Angular 2 Anschlag eine beobachtbare
- 19. Wie erstelle ich eine Mehrfachfrage?
- 20. Wie erstelle ich eine Transaktionsnummer?
- 21. Wie erstelle ich eine MKMapView?
- 22. Iframe und domainübergreifende Anfragen
- 23. Wie Angular 2
- 24. Angular 2 - Wie navigiere ich nach Bootstrap?
- 25. Wie bekomme ich Angular 2 Response Header
- 26. Wie finde ich Datenmodell für Angular 2/Ionic 2 Anwendung
- 27. Wie erstelle ich eine PayPal-Zahlungsanforderung und sende eine Rechnung?
- 28. Angular 2 - Interpolation und Bindung mit asynchronen HTTP-Anfrage
- 29. Angular 2 HTTP-Post-Anfrage wird nicht aufgerufen
- 30. Wie erstelle ich eine Liste von DataFrame?
'CORS ist etwas nativ von Browsern unterstützt 'ist, was ich gesucht habe. Das bedeutet, dass es nichts für den Kunden (mich) zu tun gibt, außer es zu testen, wenn die serverseitige Arbeit bereits implementiert wurde. –