[英]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.