Что это значит, когда HTTP-запрос возвращает код состояния 0? - PullRequest
102 голосов
/ 16 мая 2009

Что это означает, когда сетевые вызовы JavaScript, такие как fetch или XMLHttpRequest, или любой другой тип сетевого запроса HTTP, не работают с кодом состояния HTTP 0?

Похоже, это недопустимый код состояния HTTP, так как остальные коды в спецификации HTTP состоят из трех цифр.

Я попытался полностью отключить сеть в качестве теста. Это может быть не связано, но это привело к коду состояния 17003 (IIRC), который при быстром поиске означает «Сбой поиска DNS-сервера».

Один и тот же код отлично работает в некоторых местах и ​​системах, однако в определенных средах происходит сбой с кодом состояния 0 и не предоставляется responseText.

Это типичный HTTP-запрос POST к URL-адресу в Интернете. Он не включает file: // который, как я понимаю, может возвращать 0, указывая на успех в Firefox.

Ответы [ 13 ]

1 голос
/ 27 января 2013

В моем случае это произошло из-за того, что вызов AJAX был заблокирован браузером из-за политики того же происхождения . Это было наименее ожидаемая вещь, потому что все мои HTML-файлы и сценарии обслуживались с 127.0.0.1. Как можно считать, что они имеют разное происхождение?

Во всяком случае, основной причиной был невинно выглядящий тег <base>:

<base href='<%=request.getScheme()%>://<%=request.getServerName() + ":" + request.getServerPort() + request.getContextPath()%>/'/>

Я удалил тег <base>, который мне, кстати, не понадобился, и теперь работает нормально!

0 голосов
/ 10 августа 2015

Следует отметить, что загрузка файла ajax, превышающая директиву client_max_body_size для nginx, вернет этот код ошибки.

0 голосов
/ 08 сентября 2012

В случае, если кто-то еще сталкивался с этой проблемой, это вызывало у меня проблемы из-за запроса AJAX и отправки обычной формы. Я решил это следующей строкой:

<form onsubmit="submitfunc(); return false;">

Ключом возврата является ложь, из-за которой форма не отправляется. Вы также можете просто вернуть false из функции submitfunc (), но я нахожу, что это явно понятнее.

...