Ich fange an, eine Webanwendung zu entwickeln, die AngularJS Frontend und Laravel Backend hat. Zu diesem Zeitpunkt habe ich zwei Verzeichnisse in meinem XAMP htdocs - eines für AngularJS Projekt, das von grunt Embedded Server auf localhost Port 9000 und andere Projekt ist Laravel, die von XAMP Apache/PHP auf localhost post 8081 serviert wird. Ich sehe Probleme mit $ http Anfragen an die andere Laravel-Anwendung und andere URLs aus dem äußeren Internet, die ich als Test-URLs verwende - anscheinend ist dies wegen Cross-Site-SicherheitsschutzVerschiedene Server für AngularJS und PHP?
Das führt mich zu der Frage - ist es möglich zu haben zwei Server (oder mindestens ein Server mit verschiedenen Ports - jeder Port kann von verschiedenen Servern bedient werden) für Frontend/Backend-Anwendungen? Ich weiß, dass dies für GET-Anfragen möglich ist, die durch JSONP-Anfragen ersetzt werden sollen. Aber was ist mit anderen HTTP-Verben - gibt es $ http-Methoden, die PUT, DELETE und ähnliche Anfragen an den anderen Server oder an den anderen Port desselben Servers/derselben Anwendung stellen können?
Oder die einzige Möglichkeit besteht darin, sowohl das Frontend als auch das Backend auf demselben Server/Port in derselben Anwendung auszuführen. Das bedeutet, dass ich AngularJS als Teil einer PHP- oder Java-Anwendung hosten sollte und dafür nicht grunzen sollte, oder?
Das Anfangsproblem erwuchs aus berühmten Angular JS http Status -1 Fehler. Ich verfolge genau Tutorial http://www.tutorials.kode-blog.com/laravel-5-angularjs-tutorial und mein Code:
return $http({
method: 'GET', //'JSONP',
url: 'http://localhost:8081/testserver/server.php/api/v1/contracts',
//url: 'http://jsonplaceholder.typicode.com/posts',
timeout: 100000
}).then(function(result) {
alert(result);
return result.data;
},
function (error) {
alert(error);
console.log("v2 my object: %o", error);
alert(JSON.stringify(error));
}
);
Wenn ich Anforderung an den lokalen Host zu machen, die -1 Fehler vorhanden ist, aber meine Anfrage zu http://jsonplaceholder.typicode.com/posts gibt erwartete Antwort. Ich habe versucht, meine externe IP-Adresse anstelle von localhost zu verwenden, aber der Fehler war immer noch vorhanden. Mein Server-Seite Code verwendet scheinbar Laravel Illuminate -> get() Funktion, die, nehme ich an, für Vertrags Umwandlung Array notwendig, alle die Umwandlung tun Objekte in JSON-Antwort:
public function index($id = null) {
if ($id == null) {
//this branch is being tested
return Contract::orderBy('CONTRACT_NO', 'asc')->get();
} else {
return $this->show($id);
}
}
Es gibt nichts, außer über Server-Antwort - es ist JSON-Array:
[{"CONTRACT_NO":"1","CUSTOMER":null,...}]
Sie müssen bei CORS aussehen fordern –
Mein erstes Problem ist AngularJS http Status -1 berühmte Probleme. Ich dachte, dass es mit CORS verbunden ist, aber mein Angular läuft auf http: // localhost: 9000/#/contracts und es wurde erfolgreich eine Anfrage an 'url:' http://jsonplaceholder.typicode.com/posts '' aber gemacht Es wirft http-Status -1 für den Localhost Laravel-Dienst.Ich bin mir nicht sicher, ob das ist oder nicht CORS – TomR
Können Sie einen Code schreiben, der zeigt, wie Sie Ihre Anfrage Client-Seite machen, und wie Sie versuchen, es zu behandeln Server-Seite –