Sporadic 400 (Bad Request) тем же сервисом - PullRequest
0 голосов
/ 28 декабря 2018

Это простая форма входа в систему, которая отлично работает с большинством пользователей, но по некоторым причинам есть несколько пользователей, которые получают 400 (Bad Request) при попытке входа в систему.Нет ничего особенного в именах пользователей, которые они используют, например: наличие специальных символов, специальных слов и т. Д.

Я уже несколько раз пытался изменить формат данных или использовать JSON.stringify () имени пользователя и пароля, но, в конце концов, не только проблемные пользователи не могут войти, но и все остальные.

    $('#submit').click(function() {
            username = $('#username').val();
            password = $('#password').val();
            $.ajax({
                type: 'POST',
                url: '/auth/signin',
                data: 'username=' + username + '&password=' + password,
                success: function(json) {
                    location.reload(true);
                },
                error: function (xhr, ajaxOptions, thrownError) {

                        $('#login-error').html('Invalid username/password');
                }
            });
            return false;
        });

Даже если я пытаюсь увидеть thrownError, он только дает мне «ошибку»

jquery.js: 4 POST http://website/auth/signin 400 (неверный запрос)
send @ jquery.js: 4
ajax @ jquery.js: 4
(анонимно) @ login.js: 39
dispatch @ jquery.js: 3
r.handle @ jquery.js: 3

Плохой запрос
ошибка

jQuery v1.11.1

Как я могу увидеть исполняемый файл POST, потому что даже во вкладке netwrok chrome inspect ничего не зарегистрировано?Как можно работать с одними данными (user / pass - они действительны), но не с другими, только с другой последовательностью символов?

Использование encodeURIComponent для user / pass решило эту проблемупроблема
Дополнительная информация, благодаря Андреасу:
Нужно ли кодировать данные поста ajax в URI?

1 Ответ

0 голосов
/ 28 декабря 2018
 $('#submit').click(function() {    
        fire_ajax_submit();
});

function fire_ajax_submit() {
    // PREPARE FORM DATA
    var formData = {
        username  : $("#username").val(),
        password  :  $("#password").val()

    }

    var protocol = window.location.protocol;
    var host = window.location.host;
    var pathArray = window.location.pathname.split('/');
    var pathName = pathArray[1];
    $.ajax({
        type : "POST",
        contentType : "application/json",
        url : protocol + "//" + host + "/" + pathName + "/auth/signin",
        data : JSON.stringify(formData),
        dataType : 'json',
        cache : false,
        success : function(data) {
            //doSomthing

        },
        error : function(e) {
            console.log("ERROR : ", e);         

        }
    });

}
...