Я открываю загрузку файла из удаленного API на своей веб-странице через window.open()
. API (сервер Flask) обрабатывает ошибки и возвращает сообщение об ошибке, если есть внутренняя ошибка сервера, например:
@app.errorhandler(502) //all other errors are handled the same way, including 500, etc.
@crossdomain(origin='*')
def bad_gateway_error(error):
return "Bad Gateway Error - Please make sure you're using a properly formatted file! Details: " + str(error), 200
Я хочу отобразить эту ошибку на своем сайте вместо перенаправления на страницу с ошибкой. Я пытаюсь поймать это через:
try {
window.open("https://API/receivedoc?timestamp="+timestamp,"_self")
} catch(e) {
filerootdiv.querySelector('.output').innerHTML = String(e);
}
Это, однако, ничего не делает (проверено в Chrome). Как я могу уловить ошибку, когда я использую window.open
? Я полагаю, это может быть связано с тем, что при обработке ошибок я возвращаю сообщение 200, так что возвращаемая строка фактически возвращается, а не просто происходит сбой сервера (это должно происходить таким образом, поскольку он прекрасно работает со всеми другими ошибками, когда я ' я не пытаюсь вернуть файл). Проблема в том, что я не могу сказать, будет ли запрос API возвращать файл или строку перед выполнением window.open()
.
UPDATE
Я пытался реализовать:
let new_window = window.open("https://flaskmin.run.aws-usw02-pr.ice.predix.io/receivedoc?timestamp="+timestamp,"_self")
newWindow.onerror = function() {
filerootdiv.querySelector('.output').innerHTML = "Error!";
Однако, это все еще только открывает новое окно с ошибкой. Я думаю, это из-за обработки ошибок на стороне сервера (я не могу это изменить). Могу ли я как-то проверить содержимое new_window
перед перенаправлением на него, и просто не открывать его, если это просто строка, содержащая слово «error»?