Подтвердить что ты не робот

Почему AJAX возвращает код состояния HTTP 0?

По какой-то причине при использовании AJAX (с моим разработанным приложением ) браузер просто прекращает загрузку и возвращает коды состояния 0. Почему это происходит?

4b9b3361

Ответ 1

Другой случай:

Возможно, вы получите код состояния 0, если у вас есть отправлен вызов AJAX, и перед тем, как получить ответ AJAX, было вызвано обновление браузера. Вызов AJAX будет отменен, и вы получите этот статус.

Ответ 2

По моему опыту, вы увидите статус 0, когда:

  • выполнение межсайтовых сценариев (когда доступ запрещен)
  • запрос недоступного URL-адреса (опечатка, проблемы с DNS и т.д.)
  • в противном случае запрос перехватывается (проверьте блокировщик рекламы)
  • как и выше, если запрос прерван (браузер уходит со страницы)

Ответ 3

Хотя это, вероятно, не связано с , этот вопрос StackOverflow возникает при запуске jQuery и AJAX status code 0, поэтому я подумал, что я бы предложил ответ для тех, кто сталкивался с этой проблемой в других случаях. Недавно я столкнулся с этой проблемой и нашел полезные ссылки:

Ответ 4

Такая же проблема при использовании <button onclick="">submit</button>. Затем решается с помощью <input type="button" onclick="">

Ответ 5

Код состояния 0 означает, что запрошенный URL недоступен. Изменив http://something/something на https://something/something, работал у меня, IE выкидывает ошибку, говоря "разрешение отклонено", когда код состояния равен 0, другие браузеры не работают.

Ответ 6

Важно отметить, что вызовы ajax могут терпеть неудачу даже в течение сеанса, который определяется файлом cookie с определенным доменом, префиксным с www. Когда вы затем вызываете свой php script например. без www. префикс в URL-адресе, вызов завершится неудачно и наоборот.

Ответ 7

Эта статья помогла мне. Я отправлял форму через AJAX и забыл использовать return false (после моего запроса ajax), что привело к отправке классической формы, но, как ни странно, она не была завершена.

Ответ 8

Потому что это проявляется, когда вы google ajax status 0, я хотел оставить какой-то совет, который просто потратил у меня много времени впустую... Я использовал ajax для вызова службы PHP, которая была филистом REST_Controller для Codeigniter (не уверен если это имеет к этому какое-либо отношение) и продолжал получать статус 0, readistate 0, и это заводило меня с ума. Я отлаживал его и замечал, когда я буду эхо и вернусь вместо выхода из сообщения, которое я получил бы. Наконец, я отключил отладку и попытался, и это сработало. Кажется, отладчик xDebug с PHP каким-то образом модифицировал ответ. Если вы используете PHP-отладчик, попробуйте отключить его, чтобы узнать, помогает ли это.

Ответ 9

Я нашел другой случай, когда jquery дает вам код состояния 0 - если по какой-либо причине XMLHttpRequest не определен, вы получите эту ошибку.

Очевидно, что это обычно не происходит в Интернете, но ошибка в ночной сборке firefox вызвала это в дополнении, которое я писал.:)

Ответ 10

"Случайное" представление формы было именно той проблемой, с которой я столкнулся. Я просто удалил теги FORM вообще, и это, похоже, исправить проблему. Спасибо, всем!

Ответ 12

У нас была аналогичная проблема - код состояния 0 на jquery ajax call - и нам потребовался целый день, чтобы его диагностировать. Поскольку никто еще не упомянул об этой причине, я думал, что поделюсь.

В нашем случае проблема связана с сбоем HTTP-сервера. Некоторая ошибка в PHP выдувала Apache, поэтому на стороне клиента это выглядело так:

[email protected]:~$ telnet our.server.com 80
Trying 180.153.xxx.xxx...
Connected to our.server.com.
Escape character is '^]'.
GET /test.php HTTP/1.0
Host: our.server.com

Connection closed by foreign host.
[email protected]:~$ 

где test.php содержит код сбоя. Нет данных, возвращаемых с сервера (даже заголовки) = > ajax-вызов был прерван со статусом 0.

Ответ 13

Для меня проблема была вызвана тем, что хостинговая компания (Godaddy) рассматривала операции POST, которые содержали существенные данные ответа (всего более десятков килобайт) как угрозу безопасности. Если более 6 из них произошли за одну минуту, хост отказался выполнить код PHP, который ответил на запрос POST в течение следующей минуты. Я не совсем уверен, что сделал хост вместо этого, но я видел, что с tcpdump пакет TCP reset поступает как ответ на запрос POST из браузера. Это привело к тому, что код статуса http, возвращаемый в объекте jqXHR, равен 0.

Изменение операций с POST на GET устраняет проблему. Не понятно, почему Godaddy налагает этот предел, но изменение кода было проще, чем изменение хоста.

Ответ 14

В моем случае это было вызвано запуском моего сервера django под http://127.0.0.1:8000/, но посылка вызова ajax на http://localhost:8000/. Несмотря на то, что вы ожидаете, что они будут сопоставляться с одним и тем же адресом, они не делают так, чтобы вы не отправляли свои запросы на localhost.

Ответ 15

В моем случае установка url: '' в настройках ajax привела бы к коду состояния 0 в ie8.. Кажется, что это просто не переносит такую ​​настройку.

Ответ 16

Я думаю, что знаю, что может вызвать эту ошибку.

В google chrome есть встроенная функция для предотвращения атак ddos ​​для расширений google chrome.

Когда запросы ajax непрерывно возвращают 500+ ошибок состояния, он начинает дросселировать запросы.

Следовательно, можно получать статус 0 по следующим запросам.

Ответ 17

В попытке выиграть приз за самую туманную причину описанной проблемы.

Забыть позвонить

xmlhttp.send(); //yes, you need this pivotal line!

Да, я все еще получал нулевые значения статуса от "открытого" вызова.

Ответ 18

В нашем случае ссылка на страницу была изменена с https на http. Несмотря на то, что пользователи вошли в систему, им не удалось загрузить AJAX.

Ответ 19

Во время выполнения запроса наблюдайте за консолью браузера, если вы видите "Политика одинакового происхождения запрещает чтение удаленного ресурса по адресу http ajax..... причина: отсутствует заголовок cors 'access-control-allow-origin", то вам нужно добавить "Access-Control-Allow-Origin" в заголовке ответа. exa: в Java вы можете установить это как response.setHeader("Access-Control-Allow-Origin", "*"), где response - HttpServletResponse.

Ответ 20

В моем случае я получал это, но только на Safari Mobile. Проблема в том, что я использовал полный URL (http://example.com/whwhat.php) вместо относительного (what.php). Это не имеет никакого смысла, хотя, это не может быть проблемой XSS, потому что мой сайт размещен на http://example.com. Я предполагаю, что Safari просматривает http-часть и автоматически помечает ее как небезопасный запрос, не просматривая оставшуюся часть URL.

Ответ 21

При поиске и устранении неисправностей я обнаружил, что этот AJAX xmlhttpRequest.status == 0 может означать, что клиентский вызов еще не достиг сервера, но произошел сбой из-за проблемы на стороне клиента. Если ответ был с сервера, то статус должен быть таким: 1xx/2xx/3xx/4xx/5xx HTTP Response code. В дальнейшем устранение неисправностей должно быть сосредоточено на проблеме КЛИЕНТА и может быть связано с отсутствием подключения к сети Интернет или одним из описанных @Langdon выше.