Почему мой запрос POST превращается в запрос GET после отправки формы?

Я использую серверную часть Laravel (8) с интерфейсом React.js. В моем коде я отправляю запрос POST на свой сервер. Данные успешно отправляются в базу данных, но я не получаю ответа в консоли.

Вместо этого он каким-то образом превращает запрос POST в запрос GET, и я понятия не имею, почему. Причина, по которой я знаю, что он превращается в запрос GET, потому что я вижу параметры в URL-адресе при отправке формы, а также при проверке на вкладке «Сеть».

Я пытался отлаживать все эти дни подряд, но, похоже, ничего не работает - я пробовал все под солнцем и все предложения в SO, чтобы решить эту проблему, но безрезультатно. Что я делаю не так?

Код React.js:

const [name, setName] = useState("");
const [email, setEmail] = useState("");
const [password, setPassword] = useState("");
const [confirmPassword, setConfirmPassword] = useState("");

const handleSubmit = () => {
    let data = {
        'name': name,
        'email': email,
        'password': password,
        'c_password': confirmPassword
    };

    JSON.stringify(data);

    axios.post('http://website.test/api/register', data)
        .then(resp => {
            console.log(resp);
        }).catch(error => {
        console.log(error);
    });
}

api.php:

Route::middleware(['cors'])->group(function () {
    Route::post('/register', [RegisterController::class, 'register']);
});

RegisterController.php:

public function register(Request $request)
{
    $validator = Validator::make($request->all(), [
        'name' => 'required',
        'email' => 'required|email',
        'password' => 'required',
        'c_password' => 'required|same:password',
    ]);

    if ($validator->fails()) {
        return $this->sendError('Validation Error.', $validator->errors());
    }

    $userId = 'u-' . Str::uuid()->toString();
    $input = $request->all();
    $input['password'] = bcrypt($input['password']);
    $input['UserID'] = $userId;
    $user = User::create($input);
    $input['name'] = $user->name;
    $success['token'] = $user->createToken('MyApp')->accessToken;

    return $this->sendResponse($success, 'User registered successfully.', $input['UserID']);
}

cors.php

return [
'paths' => ['api/*'],

'allowed_methods' => ['*'],

'allowed_origins' => ['*'],

'allowed_origins_patterns' => [],

'allowed_headers' => ['*'],

'exposed_headers' => [],

'max_age' => 0,

'supports_credentials' => false,

];

Всего 1 ответ


Я не знаю, как выглядит ваша форма, как вы запускаете отправку, но я предполагаю, что вы запускаете действие отправки формы по умолчанию, которое является запросом GET.

Вам необходимо предотвратить это с помощью формы, добавив event.preventDefault(); вверху обработчика отправки.


Есть идеи?

10000