Есть ли ЛЮБОЙ способ подавить приглашение ко входу в систему браузера на 401 ответе при использовании XmlHttpRequest

Нет разницы, потому что вы используете тот же класс и метод. Импорт для первого примера будет:

import io.restassured.RestAssured;

Импорт для второго будет:

import static io.restassured.RestAssured.*;

И для обоих примеров вы можете сделать это:

RestAssured.baseUri = "http://www.example.com";
//Example 1
RestAssured.given().when().get().then().statusCode(200);
//Example 2
given().when().get().then().statusCode(200);
8
задан Strelok 11 December 2008 в 23:54
поделиться

1 ответ

Я думаю, что работал вокруг этого. Конечно, полагаясь на внутренний MS связанные с Ajax ошибки не действительно хороши, но это добьется цели для поверхностей других с этой проблемой.

В основном то, что Вы делаете, является Вами, устанавливает заголовок X-MicrosoftAjax на значение Delta=true (случай важен здесь), ScriptModule интерпретирует это как нормальное перенаправление, и превратит ответ в 200, но установит pageRedirect строку данных для любого ScriptManager (Ajax MS PageRequestManager) на странице для потребления. Функция jQuery.ajax будет все еще рассматривать это как ошибку, так в основном можно проверить на pageRedirect в responseText свойстве XHR и hadle его соответственно. Как отправка пользователя к странице входа в систему чего-то.

    $.ajax({
            type: "POST",
            url: postUrl + "/SomePageMethod",
            data: "{searchString:\"" + escape(searchString) + "\"}",
            contentType: "application/json; charset=utf-8",
            beforeSend: function(xhr) {
                xhr.setRequestHeader("X-MicrosoftAjax","Delta=true");
            },
            dataType: "json",
            success: onSuccess,
            error: onError
        });

function onError(xhr, e, textStatus) {
    var isAjaxRedirect = xhr.status == 200 && xhr.responseText.match(/pageRedirect/);
    if (isAjaxRedirect == "pageRedirect") {
        // forms authentication ticket expired
        location.href = "a session timeout page, or a login page or whatever";
    }
}
5
ответ дан 5 December 2019 в 20:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: