Я использую laravel lumen php frameowrk 5.5.2 на локальном хосте \ 8080 на моей машине. Я запускаю интерфейс angular4 локально на локальном хосте \ 4200. Когда я запускаю свое приложение, я могу подключиться к некоторым API Laravel через Angular и получить данные, а также я могу внести изменения в эти API. Но когда я пытаюсь подключиться к другому API-интерфейсу в Laravel через мой интерфейс, я получаю эту ошибку в консоли браузера: «Доступ к XMLHttpRequest в« http://localhost:8080/ABC' from origin »http://localhost:4200' был заблокирован политикой CORS: Ответ на запрос предварительной проверки не проходит проверку контроля доступа: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin». "
Итак, я сослался на эту ссылку и внес соответствующие изменения в код внутреннего сервера Laravel, как они упоминали:
https://gist.github.com/danharper/06d2386f0b826b669552#file-usage-md
Но потом, когда я подключаюсь к Laravel apis через angular, теперь я получаю эту ошибку:
«Доступ к XMLHttpRequest в« http://localhost:8080/ABC' из источника »http://localhost:4200' заблокирован политикой CORS: Ответ на предпечатный запрос не проходит проверку контроля доступа: он не имеет статуса HTTP ok.»
Кроме того, нужно ли мне вносить какие-либо изменения в угловой код переднего конца?
Я не могу двигаться вперед из-за этой блокировки CORS ... Любая помощь будет принята с благодарностью.
Это мой файл CorsMiddleware.php в Laravel:
использовать Закрытие;
класс CorsMiddleware
{
public function handle($request, Closure $next)
{
$response = $next($request);
$response->header('Access-Control-Allow-Methods', 'HEAD, GET, POST, PUT,
PATCH, DELETE');
$response->header('Access-Control-Allow-Headers', $request-
>header('Access-Control-Request-Headers'));
$response->header('Access-Control-Allow-Origin', '*');
return $response;
}
}
Это мой файл CatchAllOptionsRequestsProvider.php в Laravel:
/ **
* Если входящий запрос является запросом OPTIONS
* мы зарегистрируем обработчик для запрошенного маршрута
* /
Класс CatchAllOptionsRequestsProvider расширяет ServiceProvider {
public function register()
{
$request = app('request');
if ($request->isMethod('OPTIONS'))
{
app()->options($request->path(), function() { return response('',
200);
});
}
}
Это мой файл app.php, в котором я регистрирую своего провайдера и промежуточное ПО Cors:
$ app-> регистр (App \ Providers \ CatchAllOptionsRequestsProvider :: класс);
$ app-> routeMiddleware (['auth' => App \ Http \ Middleware \ Authenticate :: class,]);
$ app-> промежуточного слоя ([App \ Http \ Middleware \ CorsMiddleware :: класс]);