簡體   English   中英

Ajax到Laravel返回404且未定義Responsejson

[英]Ajax to Laravel Returns 404 and Responsejson is undefined

當我$ .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。 我在Routes.php的頂部發送了一個標題,如下所示:

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

文件,即使我的filters.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;
});

我希望這可以幫助別人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM