Ajax to Laravel 返回 404,Responsejson 未定义

Ajax to Laravel Returns 404 and Responsejson is undefined

本文关键字:Responsejson 未定义 返回 to Laravel Ajax      更新时间:2023-09-26

当我$.ajax到从跨域请求执行以下控制器的路由时,我得到一个空响应。当我取消注释var_dump行时,我得到一个包含数据的响应,否则我得到一个 404 响应,并且 responsejson 对象未定义。任何帮助非常感谢。当我直接在浏览器中访问同一路由的 get 等效项时,我得到一个有效的 json 响应。

<?php
use App'Models'User;
class AuthenticationController extends 'BaseController {
public function getLogin() {
    return $this->postLogin();
}
public function postLogin() {
    $credentials = array(
        'email' => Input::get('email'),
        'password' => Input::get('password')
    );
    try {
        $user = Sentry::authenticate($credentials, false);
        if ($user) {
            //var_dump(array('flash' => 'Authentication failed'));
            //return Response::json(array('flash' => 'Authentication failed'), 401);
            return $user->toJson();
        }
    } catch (Exception $e) {
        return Response::json(array('flash' => 'Authentication failed'), 401);
    }
}
public function getLogout() {
    Sentry::logout();
    return Response::json(array('flash' => 'Logged out'), 200);
    //return Redirect::route('admin.login');
}
}

你有没有试过这样的事情:

try {
    $user = Sentry::authenticate($credentials, false);
    if ($user) {
        return Response::json($user);
        # or
        Response::json($user)->send();
    }
} catch (Exception $e) {
    return Response::json(array('flash' => 'Authentication failed'), 401);
}

事实证明,我发送了两次标头。我最初在使用 CORS 时遇到了问题,因为我从在本地主机上运行的 Angular JS 前端连接到这个同样在本地主机上运行的 laravel API,但在不同的端口上。我在路由的顶部发送了一个标题.php如下所示:

header('Access-Control-Allow-Origin', '*');

文件,即使我的过滤器.php已经有如下所示的代码:

App::before(function($request)
{
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    header('Access-Control-Allow-Origin', '*');
    header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
    header('Access-Control-Allow-Headers', 'Origin, Content-Type, Accept, Authorization, X-Request-With');
    header('Access-Control-Allow-Credentials', 'true');
    exit;
}
});
App::after(function($request, $response)
{
$response->headers->set('Access-Control-Allow-Origin', '*');
$response->headers->set('Allow', 'GET, POST, OPTIONS');
$response->headers->set('Access-Control-Allow-Headers', 'Origin, Content-Type, Accept, Authorization, X-Requested-With');
$response->headers->set('Access-Control-Allow-Credentials', 'true');
return $response;
});

我希望这对某人有所帮助。