У меня есть вот такой самописанный мини-роутер, который в теории должен принимать запросы
class Router
{
private $routes = array();
private function setRoute(string $method, string $path, $callback): void {
$this->routes[$method . $path] = [
"method" => $method,
"callback" => $callback
];
}
public function get(string $path, $callback): void {
$this->setRoute("GET", $path, $callback);
}
public function post(string $path, $callback): void {
$this->setRoute("POST", $path, $callback);
}
public function delete(string $path, $callback): void {
$this->setRoute("DELETE", $path, $callback);
}
public function run() {
$method = $_SERVER["REQUEST_METHOD"];
$path = $_SERVER["REQUEST_URI"];
call_user_func($this->routes[$method . $path]['callback']);
}
}
Основной файл имеет следующий код:
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT');
header("Content-Type: application/json");
require 'Router.php';
$router = new Router();
$router->post('/user', function () {
echo 'post';
});
$router->run();
Я пытаюсь отправить запрос через axios вот таким образом:
axios.post('http://localhost:8000/user').then((r) => console.log(r))
И все проходит удачно, но как только я пытаюсь передать параметры (Пусть даже пустой объект)
axios.post('http://localhost:8000/user', { } ).then((r) => console.log(r))
Я получаю следующее:
Access to XMLHttpRequest at 'localhost:8000/user' from origin 'localhost:3000' has been blocked by CORS policy: Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight response.
При этом, cors на сервере вроде как настроены