Как обработать fetch() = error 400 от сервера без перенаправления на авторизацию

Подскажите, пожалуйста, почему при получении ответа 400 от сервера на странице может происходить перенаправление на страницу авторизации вместо рендера пустой страницы?

Если учесть, что пользователь уже авторизован и ему не нужно дополнительно вводить свои данные для авторизации, нужно просто отобразить пустую страницу из store, как можно избежать такого перенаправления после вызова fetch к API?

Если закомментировать вызов safeFetch, то отображается нормальная пустая страница и перенаправления не происходит.


export const errors = {
    process: async (response: Response): Promise<FormattedResponse> => {
        let result = {} as FormattedResponse;
        switch (response.status) {
        //...
            case 400: result = { isSuccess: false, result: {}, isAuthorized: undefined, isIdentified: undefined }
        //...
        }
        return result;
    }
}
async function safeFetch(url: string): Promise<FormattedResponse> {
    const resp = await fetch(url, { credentials: 'include', headers: headers });

    return await errors.process(resp);
};
export async function getPagedApiResponse(url: string, argument: string, id: string = null): Promise<VueTemplateState> {

    let state = store.state.vuePageTemplate;
    //комментируем safeFetch и перенаправления не происходит 
    //но как тогда получить данные с API?
    const resp = await safeFetch(url + argument + '&' + id); // https://my.api/items-paged?pageNumber=0&itemId=4

    const stateKey = Object.keys(ENDPOINTS).find(k => ENDPOINTS[k] === url); 
    state[stateKey] = resp.result;
    state.isAuthorized = resp.isAuthorized;
    state.isIdentified = resp.isIdentified;
        
    return state;
}

Ответы (1 шт):

Автор решения: Ivan Silkin

В общем пришлось поправить API, чтобы оно не возвращало ошибку 400 при неверных аргументах, а просто пустой объект JSON. Всё-равно API контроллер работает только для авторизованных пользователей.

Скорее всего ошибка связана с конфигурацией всего ASP.CORE сайта, т.к. весь vue вызывается из-под razor pages.

→ Ссылка