У меня есть система с Ionic 3 для разработки адаптивного веб-приложения и Laravel как Rest API.На локальном сервере он работает отлично, но когда я пошел на развертывание приложений, он выдал ошибку CORS.
Я уже определил прокси [{"path", "proxyUrl"}]
в ionic.config.json.Есть ли какие-либо другие изменения, которые мне нужно внести, чтобы запустить систему в работу?
Я работаю на сервере Apache.
Запрос на вход в систему:
login() {
this.http.post<any>('http://www.example.com/api/login', this.user)
.subscribe(data => {...})};
Мой перехватчик Http:
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
let authRequest = req;
const token = this.session.tokenGetter();
if (token) {
authRequest = req.clone({
setHeaders: {
'Access-Control-Allow-Origin': '*',
'Authorization': `Bearer ${token}`
}
})
}
return next.handle(authRequest);
}
Маршруты в Laravel:
Route::post('login', function (Request $request) {
$data = $request->only('email', 'password');
$token = \Auth::guard('api')->attempt($data);
if (!$token) {
return response()->json([
'error' => 'Credentials invalid'
], 400);
}
return ['token' => $token];
});
CORS в Laravel:
<?php
namespace App\Http\Middleware;
use Closure;
class CorsMiddleware
{
public function handle($request, Closure $next)
{
if($request->is('api/*')){ //api/products /api/login
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: Content-Type, Authorization');
}
return $next($request);
}
}