Я искал решение в широком и широком диапазоне для решения этой проблемы.Проблема маршрутизации с Laravel, AngularJS и CORS
У меня есть веб-приложение AngularJS с реализацией серверной в Laravel 4 следующим образом:
http://app.mydomain.io/ = AngularJS web app
http://api.mydomain.io/ = Laravel Back-end
в пределах routes.php файла в Laravel У меня есть следующий PHP-код, чтобы установить заголовки Access-Control:
header('Access-Control-Allow-Origin: http://app.mydomain.io');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE');
у меня также есть маршрут установка для запроса авторизации следующим образом:
Route::post('/login', function()
{
$email = Input::get('email');
$password = Input::get('password');
if (Auth::attempt(array('email' => $email, 'password' => $password)))
{
return "Success!";
} else {
return "Fail!";
}
});
В AngularJS У меня есть AuthService, который выглядит, как показано ниже:
app.factory('AuthService', ['$resource', '$q', '$cookieStore', function($resource, $q, $cookieStore) {
var user = null;
var Service = $resource('//api.mydomain.io/login/', {}, {});
return {
login: function(email, password) {
var deferred = $q.defer();
Service.save({email: email, password: password}, function(response) {
$cookieStore.put('user', JSON.stringify(response));
deferred.resolve(true);
}, function(error) {
deferred.reject(error);
});
return deferred.promise;
}
};
}]);
Когда этот запрос был сделан, я получаю следующее:
XMLHttpRequest cannot load http://api.mydomain.io/login. Invalid HTTP status code 404
Если изменить маршрут Laravel и AngularJS обслуживание использовать GET, все работает как и ожидалось. Проблема связана с AngularJS .save(), создающим запрос OPTIONS вместо POST (я не совсем понимаю почему).
Может ли кто-нибудь помочь мне с правильным и лучшим решением?
Спасибо!
возможно дубликат [AngularJS выполняет запрос OPTIONS HTTP для кросс-происхождения ресурса] (http://stackoverflow.com/questions/ 12111936/angularjs-perform-a-options-http-request-for-a-cross-origin-resource) – Barbarrosa
Вам нужно добавить заголовки в index.php, а также создать промежуточное ПО для этого. Я столкнулся с тем же вопросом и решил его, воспользовавшись помощью http://tekina.info/cors-problem-laravel-angular –