Я пишу API и использую Laravel 4 для этого. Мой api находится в другом домене. допустим, что это: http://api-example.com/
И когда я пытаюсь сделать ajax-запросы через Backbone для своего api из своего веб-приложения (i.e mydomain.com
) с базовой аутентификацией, он иногда работает нормально, но иногда это не так. Я пытаюсь понять, почему. Ниже представлен мой фильтр App::before
и фильтр App::after
.
App::before(function($request)
{
if($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
$statusCode = 204;
$headers = [
'Access-Control-Allow-Origin' => 'http://mydomain.com',
'Allow' => 'GET, POST, OPTIONS',
'Access-Control-Allow-Headers' => 'Origin, Content-Type, Accept, Authorization, X-Requested-With',
'Access-Control-Allow-Credentials' => 'true'
];
return Response::make(null, $statusCode, $headers);
}
});
И мой фильтр после:
App::after(function($request, $response)
{
$response->headers->set('Access-Control-Allow-Origin', 'http://mydomain.com');
$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;
});
Дело в том, что когда я пытаюсь сделать запрос на отправку /login
с учетными данными, API проверяет db и получает ключ API для пользователя. Это просто отлично работает. Но когда я пытаюсь сделать запрос POST на /users
, хром просто дает мне следующую ошибку:
XMLHttpRequest cannot load http://api-example.com/users. Origin http://mydomain.com is not allowed by Access-Control-Allow-Origin.
Я пробовал все, например, установив Access-Control-Allow-Origin
в '*'
все, что мог найти в Интернете. Но пока ничего не получилось. Я не знаю, что я должен делать.