ciao!
sto cercando di usare questa libreria: https://github.com/bramus/router
funziona tutto da postman, ma non funziona da angular:
codice:
XHROPTIONS https://www.climbfood.it/api/utenti/login
CORS Preflight Did Not Succeed
Bloccata richiesta multiorigine (cross-origin): il criterio di corrispondenza dell’origine non consente la lettura della risorsa remota da https://www.climbfood.it/api/utenti/login. Motivo: risposta CORS preliminare (“preflight”) non riuscita. Codice di stato: 404.
Bloccata richiesta multiorigine (cross-origin): il criterio di corrispondenza dell’origine non consente la lettura della risorsa remota da https://www.climbfood.it/api/utenti/login. Motivo: richiesta CORS non riuscita. Codice di stato: (null).
ERROR
Object { headers: {…}, status: 0, statusText: "Unknown Error", url: "https://www.climbfood.it/api/utenti/login", ok: false, name: "HttpErrorResponse", message: "Http failure response for https://www.climbfood.it/api/utenti/login: 0 Unknown Error", error: error }
ho provato ad inviare gli headers prima delle richieste come dicono.
ed in effetti da postman funziona.
anche quando devo fare una richiesta GET, ricevo un JSON correttamente:
Codice PHP:
use Bramus\Router\Router;
(new MyEnv(__DIR__ . '/.env'))->load();
$filename = __DIR__ . preg_replace('#(\?.*)$#', '', $_SERVER['REQUEST_URI']);
if (php_sapi_name() === 'cli-server' && is_file($filename)) {
return false;
}
$router = new Router();
$connessione = Connessione::getInstance();
$jwtHelpers = new JwtHelpers();
function sendCorsHeaders() {
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: *");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");
}
$router->before('GET', '/.*', function () {
sendCorsHeaders();
});
$router->before('POST', '/.*', function () {
sendCorsHeaders();
});
sendCorsHeaders();
$router->mount('/utenti', function () use ($router, $connessione, $jwtHelpers) {
include_once './controller/UtentiController.php';
$utenti = new UtentiController($connessione);
$router->post('/login', function () use ($utenti, $jwtHelpers) {
$data = json_decode(file_get_contents("php://input"));
$res = $utenti->login(trim($data->u_email), $data->u_password);
if (!$res) {
echo json_encode(
array(
"res" => "ko",
"message" => "Credenziali errate",
"jwt" => "",
"utente" => ""
));
} else {
$utente = $res[0];
$utenti->upUltimoLogin($utente["u_id"]);
echo json_encode(
array(
"res" => "ok",
"message" => "Login eseguito correttamente",
"jwt" => $jwtHelpers->createToken(),
"utente" => $utente
));
}
});
});
qualche idea??