gpt4 book ai didi

javascript - Laravel、AngularJS 和 CORS 的路由问题

转载 作者:可可西里 更新时间:2023-10-31 22:11:51 24 4
gpt4 key购买 nike

我一直在广泛寻找解决这个问题的方法。

我有一个带有 Laravel 4 后端实现的 AngularJS 网络应用程序,如下所示:

http://app.mydomain.io/ = AngularJS web app
http://api.mydomain.io/ = Laravel Back-end

在 Laravel 的 routes.php 文件中,我有以下 PHP 代码来设置访问控制 header :

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(我不完全理解为什么)。

谁能帮我找到正确的最佳实践解决方案?

谢谢!

最佳答案

以下解决方案有效:

在 filters.php 中添加以下内容:

App::before(function($request)
{
if (Request::getMethod() == "OPTIONS") {
$headers = array(
'Access-Control-Allow-Methods'=> 'POST, GET, OPTIONS, PUT, DELETE',
'Access-Control-Allow-Headers'=> 'X-Requested-With, content-type',);
return Response::make('', 200, $headers);
}
});

然后在 routes.php 的顶部添加以下内容:

header('Access-Control-Allow-Origin: http://app.mydomain.io');

感谢 Google Plus 社区! :)

里昂。

关于javascript - Laravel、AngularJS 和 CORS 的路由问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21559408/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com