Заголовок не разрешен на сервере?

У меня есть простой API в Laravel. Файл маршрутов выглядит так:

<?php

Route::resource('airports', 'AirportController');

Route::resource('flights', 'FlightController');

Route::resource('reservations', 'ReservationController');

Route::get('auth', 'AuthController@index');
Route::post('auth', 'AuthController@store');
Route::delete('auth', 'AuthController@destroy');

Файл фильтра имеет собственный фильтр, добавленный так:

Route::filter('auth_token', function()
{
$auth_token = Request::header('Authorization');

if(!AuthToken::where('auth_token', '=', $auth_token)->first()){
return Response::json([], 401);
}
});

Все ресурсы должны пройти до auth_token фильтр. Теперь это прекрасно работает на моей локальной машине, но как только я попробую это на моем сервере, все будет неавторизовано, даже если я передам действительный токен. Проблема, которую я понял dd($auth_token) в моем настраиваемом фильтре он возвращает ноль, что означает, что мой сервер по какой-то причине не принимает заголовок.

Мой файл .htaccess выглядит так:

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>

RewriteEngine On

# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
Header set Access-Control-Allow-Origin "*"Header set Access-Control-Allow-Headers "*"</IfModule>

Я использую REST-клиент Postman для тестирования моего приложения. В системе есть только один пользователь с адресом электронной почты admin@admin.com и паролем admin12345. Вы можете POST эти детали к /auth маршрутизировать и получить предоставленный токен доступа, который затем можно использовать для получения других ресурсов в системе.

Приложение размещено Вот. Что я делаю неправильно?

4

Решение

Порядок маршрутов может быть проблемой. попробуйте перевернуть как это и посмотреть, работает ли это …

Route::get('auth', 'AuthController@index');
Route::post('auth', 'AuthController@store');
Route::delete('auth', 'AuthController@destroy');

Route::resource('airports', 'AirportController');
Route::resource('flights', 'FlightController');
Route::resource('reservations', 'ReservationController');
1

Другие решения

Других решений пока нет …