@IvanKalinin

Как победить/отключить проверку кроссдомееного запроса?

Всем доброго.
Пытаюсь разобраться в связке Laravel+AngularJS.
Laravel установил на localhost, далее в папку public поставил angular app используя yeoman generator. Приложение Angular запускаю используя grunt serve для автокомпиляции sass и отладки. Фактически приложение открывается на localhost:9000/#
При попытке написать что то вроде $http.get('localhost/api/...... браузеры ругаются на отсутствие заголовка CORs.
Как выйти из положения?
  • Вопрос задан
  • 12883 просмотра
Решения вопроса 1
AMar4enko
@AMar4enko
Если не планируете впоследствии использовать API с "левых" доменов, то можете просто запустить Chrome с отключенной политикой безопасности.
В OS X это делается так:
$ open -a Google\ Chrome --args --disable-web-security
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@romach3
Передайте нужные заголовки ) Для этого можно подключить пакет:
https://github.com/barryvdh/laravel-cors
Или просто создать middleware, который будет добавлять их к ответу и повесить его на нужные роуты, примерно такой:
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Response;

class CORS {
    public function handle($request, Closure $next)
    {
        /** @var Response $response */
        $response = $next($request);
        return $response->header('Access-Control-Allow-Origin' , '*')
            ->header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, PUT, DELETE')
            ->header('Access-Control-Allow-Headers', 'Content-Type, X-Auth-Token, Origin');
    }
}

Учтите, что для POST/PUT/DELETE запросов ещё и токен проверяется, подробнее про это в документации.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы