Xhr returned response code 0 что это значит
Код состояния HTTP 0-что это означает для fetch или XMLHttpRequest?
Что касается кода возврата 0 для сетевых вызовов JavaScript fetch, XMLHttpRequest и MS XMLHTTP, у меня есть HTA( Microsoft HTML application-offline HTML + JavaScript application), который использует стандартный объект MS XMLHTTP COM ( Microsoft.XMLHTTP или Msxml2.XMLHTTP в зависимости от обнаруженной версии) через код JavaScript для отправки некоторых данных обратно на сервер.
он возвращает код состояния 0. Это, по-видимому, не допустимый код состояния HTTP (они должны быть три цифры в соответствии с официальная спецификация.) (Кстати, я попытался отключить сетевое соединение и получил код состояния 17003 или что-то в этом роде, что, я думаю, из-за большого количества googling означает «поиск DNS-сервера не удался».)
Он отлично работает для меня и некоторых других людей, которые испытали ее из разных мест. Однако я отправил это клиенту,и они получили код состояния HTTP с нулевым значением, а http responseText пуст. Клиент попробовал это из двух мест, но оба в пределах их корпоративной сеть.
13 ответов
Я считаю, что код ошибки указывает, что ответ был пустым (поскольку даже заголовки не были возвращены). Это означает, что соединение было принято, а затем закрыто изящно (TCP FIN). Есть ряд вещей, которые могут вызвать это, но основываясь на вашем описании, некоторую форму брандмауэра кажется наиболее вероятным виновником.
многие из ответов здесь неверны. Кажется, люди выясняют, что вызывало status==0 в их конкретном случае, а затем обобщают это как ответ.
практически говоря, status==0 для неудачного XmlHttpRequest следует считать неопределенной ошибкой.
фактическая спецификация W3C определяет условия, для которых здесь возвращается ноль: https://fetch.spec.whatwg.org/#concept-network-error
Как вы можете видеть из спецификации (fetch или XmlHttpRequest), этот код может быть результатом ошибки, которая произошла еще до контакта с сервером.
некоторые из распространенных ситуаций, которые производят этот код состояния, отражены в других ответах, но это может быть любая или ни одна из этих проблем:
Что было бы полезно для браузеров, чтобы предоставить подробные отчеты об ошибках для более этих сценариев status==0. Действительно, иногда status==0 будет сопровождать полезное консольное сообщение, но в других нет никакой другой информации.
для чего это стоит, в зависимости от браузера, вызовы AJAX на основе jQuery будут вызывать ваш обратный вызов успеха с кодом состояния HTTP 0. Мы нашли код состояния «0» обычно означает, что пользователь перешел на другую страницу до завершения AJAX-вызов.
не тот же стек технологий, что вы используете, но, надеюсь, полезно для кого-то.
wininet.dll возвращает стандартные и нестандартные коды состояния, перечисленные ниже.
для кода состояния «ноль» вы пытаетесь выполнить запрос на локальной веб-странице, запущенной на веб-сервере или без веб-сервера?
обходной путь: что мы в конечном итоге делаем
мы решили, что это связано с проблемами брандмауэра, и поэтому мы придумали обходной путь, который сделал трюк. Если у кого-то есть эта же проблема, вот что мы сделали:
мы по-прежнему записываем данные в текстовый файл на локальном жестком диске, как и раньше, используя HTA.
когда пользователь нажимает «отправить данные обратно на сервер», HTA считывает данные и записывает HTML-страницу это включает в себя эти данные как остров данных XML (фактически используя язык сценария=блок сценария XML).
HTA запускает ссылку на HTML-страницу в браузере.
HTML-страница теперь содержит javascript, который отправляет данные на сервер (с помощью Microsoft.Для xmlhttp).
надеюсь, что это поможет любому с аналогичным требованием. В данном случае это была Флеш игра, используемая на ноутбуке на выставках. У нас никогда не было доступа к ноутбук и мог только отправить его клиенту по электронной почте, поскольку эта выставка происходила в другой стране.
код ответа HTTP 0 указывает, что запрос AJAX был отменен.
как подробно это ответ на этой странице, код состояния 0 означает, что запрос по какой-то причине не удался, а библиотека javascript интерпретировала сбой как код состояния 0.
чтобы проверить это вы можете сделать одно из следующих действий:
1) Используйте это расширение chrome,Requestly для перенаправления url-адреса из https версия вашего url к http версия, так как это вызовет ошибку безопасности смешанного содержимого и в конечном итоге создаст код состояния 0. Преимущество этого подхода заключается в том, что вам не нужно менять приложение, и вы можете просто «переписать» свой url-адрес с помощью этого расширения.
2) Измените код своего приложения, чтобы при необходимости перенаправить конечную точку на http версия вашего url вместо https версия (или наоборот). Если вы это сделаете, запрос завершится ошибкой с кодом состояния 0.
в любом случае, основной причиной был невинный вид tag:
Я убрал тег, который мне, кстати, не нужен, и теперь он отлично работает!
кроме ли, вы можете найти больше информации о реальной причине, переключившись на синхронно запросы, так как вы получите также исключение:
NetworkError: произошла сетевая ошибка.
в случае, если кто-то еще сталкивается с этой проблемой, это дает мне проблемы из-за AJAX-запрос и запрос отправляется форма. Я решил это следующей строкой:
ключ есть возврат false, который заставляет форму не отправлять. Вы также можете просто вернуть false изнутри submitfunc (), но я нахожу, что явно пишу его, чтобы быть более ясным.
следует отметить, что загрузка файла ajax превышает client_max_body_size директива для nginx вернет этот код ошибки.
Я нашел новую и недокументированную причину status == 0. Вот что у меня было:—2—>
это не было перекрестным происхождением, сетью или из-за отмененных запросов (по коду или по навигации пользователя). Ничего в консоли разработчика или сетевом журнале.
Я мог найти очень мало документации по state () (Mozilla не перечисляет его, W3C делает), и ни один из них не упомянул «отклонен».
оказывается, это был мой рекламу (uBlock Origin в Firefox).
Код состояния HTTP 0-что это означает для fetch или XMLHttpRequest?
Что касается кода возврата 0 для сетевых вызовов JavaScript fetch, XMLHttpRequest и MS XMLHTTP, у меня есть HTA( приложение Microsoft HTML-автономное приложение HTML + JavaScript), которое использует стандартный объект MS XMLHTTP COM ( Microsoft.XMLHTTP или Msxml2.XMLHTTP в зависимости от обнаруженной версии) с помощью кода JavaScript для отправки некоторых данных обратно на сервер.
он возвращает код состояния 0. Это, по-видимому, не действительный код состояния HTTP (они должны быть три цифры в соответствии с официальная спецификация.) (Кстати, я попытался отключить сетевое соединение и получил код состояния 17003 или что-то в этом роде, что, как я думаю, из-за большого количества Google означает «поиск DNS-сервера не удался».)
Он отлично работает для меня и некоторых других людей, которые испытали ее из разных мест. Однако я отправил это клиенту, и они получили код состояния HTTP, равный нулю, а HTTP responseText пуст. Клиент попробовал его из двух мест, но оба в пределах своей корпоративной сеть.
13 ответов:
Я считаю, что код ошибки указывает, что ответ был пуст, (так как даже заголовки не были возвращены). Это означает, что соединение было принято, а затем закрыто изящно (TCP FIN). Есть несколько вещей, которые могут вызвать это, но на основе вашего описания, какая-то форма брандмауэра кажется наиболее вероятным виновником.
многие ответы здесь неверны. Кажется, люди выясняют, что вызывало статус==0 в их конкретном случае, а затем обобщают это как ответ.
практически говоря, status==0 для неудачного XmlHttpRequest следует считать неопределенной ошибкой.
фактическая спецификация W3C определяет условия, для которых здесь возвращается ноль: https://fetch.spec.whatwg.org/#concept-network-error
Как вы можете видеть из спецификации (fetch или XmlHttpRequest) этот код может быть результатом ошибки, которая произошла еще до обращения к серверу.
некоторые из распространенных ситуаций, которые производят этот код состояния, отражены в других ответах, но это может быть любая или ни одна из этих проблем:
Что было бы полезно для браузеров, чтобы предоставить подробные отчеты об ошибках для большего количества этих сценариев status==0. Действительно, иногда status= = 0 будет сопровождать полезное консольное сообщение, но в других нет никакой другой информации.
для чего это стоит, в зависимости от браузера, вызовы AJAX на основе jQuery будут вызывать ваш обратный вызов успеха с кодом состояния HTTP 0. Мы нашли код состояния «0» обычно означает, что пользователь перешел на другую страницу до завершения AJAX-вызов.
не такой же технологический стек, как вы используете, но, надеюсь, полезно для кого-то.
wininet.dll возвращает стандартные и нестандартные коды состояния, перечисленные ниже.
для кода состояния «ноль» вы пытаетесь сделать запрос на локальную веб-страницу, работающую на веб-сервере или без веб-сервера?
обходной путь: что мы в конечном итоге делаем
мы решили, что это связано с проблемами брандмауэра, и поэтому мы придумали обходной путь, который сделал трюк. Если у кого есть такая же проблема, вот что мы сделали:
мы по-прежнему записываем данные в текстовый файл на локальном жестком диске, как и ранее, используя HTA.
когда пользователь нажимает кнопку «отправить данные обратно на сервер», HTA считывает данные и записывает HTML-страницу это включает в себя эти данные как остров данных XML (фактически с использованием языка сценариев=блок сценариев XML).
HTA запускает ссылку на HTML-страницу в браузере.
HTML-страница теперь содержит javascript, который отправляет данные на сервер (с помощью Microsoft.XMLHTTP).
надеюсь, что это поможет любому с аналогичным требованием. В данном случае это была Флеш игра, используемая на ноутбуке на выставках. У нас никогда не было доступа ноутбук и мог только отправить его по электронной почте клиенту, поскольку эта выставка проходила в другой стране.
код ответа HTTP 0 указывает, что запрос AJAX был отменен.
как подробно это ответ на этой странице, код состояния 0 означает, что запрос не удался по какой-то причине, и библиотека javascript интерпретировала сбой как код состояния 0.
чтобы проверить это вы можете сделать одно из следующих действий:
1) Используйте это расширение chrome,Requestly для перенаправления url-адреса из https версия вашего url к http версия, так как это вызовет ошибку безопасности смешанного контента и в конечном итоге создаст код состояния 0. Преимущество этого подхода заключается в том, что вам не нужно менять свое приложение вообще, и вы можете просто «переписать» свой url с помощью этого расширения.
2) Измените код вашего приложения, чтобы при необходимости сделать вашу конечную точку перенаправить на http версия вашего url вместо https версия (или наоборот). В этом случае запрос завершится ошибкой с кодом состояния 0.
во всяком случае, первопричина была невинной на вид теги:
Я убрал тег, который мне, кстати, не нужен, и теперь он отлично работает!
кроме ли, вы можете найти дополнительную информацию о реальной причине, переключившись на синхронно запросы, так как вы получите также исключение :
NetworkError: произошла сетевая ошибка.
в случае, если кто-то еще столкнется с этой проблемой, это давало мне проблемы из-за запроса AJAX и отправки обычного запроса формы. Я решил ее с помощью следующей строки:
What does it mean when an HTTP request returns status code 0?
What does it mean when JavaScript network calls such as fetch or XMLHttpRequest, or any other type of HTTP network request, fail with an HTTP status code of 0?
This doesn’t seem to be a valid HTTP status code as other codes are three digits in HTTP specification.
I tried unplugging the network completely as a test. It may be unrelated, but that resulted in status code 17003 (IIRC), which cursory searching suggests means «DNS server lookup failed».
The same code works fine from some locations and systems, however within certain environments it fails with status code 0 and there is no responseText provided.
This is a typical HTTP POST to an Internet URL. It does not involve file:// which I understand may return 0 indicating success in Firefox.
15 Answers 15
Many of the answers here are wrong. It seems people figure out what was causing status==0 in their particular case and then generalize that as the answer.
Practically speaking, status==0 for a failed XmlHttpRequest should be considered an undefined error.
The actual W3C spec defines the conditions for which zero is returned here: https://fetch.spec.whatwg.org/#concept-network-error
As you can see from the spec (fetch or XmlHttpRequest) this code could be the result of an error that happened even before the server is contacted.
Some of the common situations that produce this status code are reflected in the other answers but it could be any or none of these problems:
What would be helpful would be for browsers to provide detailed error reporting for more of these status==0 scenarios. Indeed, sometimes status==0 will accompany a helpful console message, but in others there is no other information.
I believe the error code indicates that the response was empty, (as not even headers were returned). This means the connection was accepted and then closed gracefully (TCP FIN). There are a number of things which could cause this, but based off of your description, some form of firewall seems the most likely culprit.
For what it is worth, depending on the browser, jQuery-based AJAX calls will call your success callback with a HTTP status code of 0. We’ve found a status code of «0» usually means the user navigated to a different page before the AJAX call completed.
Not the same technology stack as you are using, but hopefully useful to somebody.
wininet.dll returns both standard and non-standard status codes that are listed below.
For the status code «zero» are you trying to do a request on a local webpage running on a webserver or without a webserver?
XMLHttpRequest status = 0 and XMLHttpRequest statusText = unknown can help you if you are not running your script on a webserver.
An HTTP response code of 0 indicates that the AJAX request was cancelled.
Коды ответа HTTP
Код ответа (состояния) HTTP показывает, был ли успешно выполнен определённый HTTP запрос. Коды сгруппированы в 5 классов:
Если вы получили код ответа (состояния), которого нет в данном списке, в таком случае он является не стандартизированным кодом ответа (состояния), вероятней всего он кастомный сервера.
Следующая таблица содержит список всех кодов и их значения:
Этот ответ отсылается, когда веб сервер после выполнения server-driven content negotiation, не нашёл контента, отвечающего критериям, полученным из user agent.
Этот ответ отсылается, когда запрос конфликтует с текущим состоянием сервера.
Этот ответ отсылается, когда запрашиваемый контент удалён с сервера.
Размер запроса превышает лимит, объявленный сервером. Сервер может закрыть соединение, вернув заголовок Retry-After
XMLHttpRequest
XMLHttpRequest is a built-in browser object that allows to make HTTP requests in JavaScript.
Despite of having the word “XML” in its name, it can operate on any data, not only in XML format. We can upload/download files, track progress and much more.
In modern web-development XMLHttpRequest is used for three reasons:
The basics
XMLHttpRequest has two modes of operation: synchronous and asynchronous.
Let’s see the asynchronous first, as it’s used in the majority of cases.
To do the request, we need 3 steps:
The constructor has no arguments.
Initialize it, usually right after new XMLHttpRequest :
This method specifies the main parameters of the request:
This method opens the connection and sends the request to server. The optional body parameter contains the request body.
Some request methods like GET do not have a body. And some of them like POST use body to send the data to the server. We’ll see examples of that later.
Listen to xhr events for response.
These three events are the most widely used:
Here’s a full example. The code below loads the URL at /article/xmlhttprequest/example/load from the server and prints the progress:
Once the server has responded, we can receive the result in the following xhr properties:
We can also specify a timeout using the corresponding property:
If the request does not succeed within the given time, it gets canceled and timeout event triggers.
Response Type
We can use xhr.responseType property to set the response format:
For example, let’s get the response as JSON:
In the old scripts you may also find xhr.responseText and even xhr.responseXML properties.
They exist for historical reasons, to get either a string or XML document. Nowadays, we should set the format in xhr.responseType and get xhr.response as demonstrated above.
Ready states
We can track them using readystatechange event:
You can find readystatechange listeners in really old code, it’s there for historical reasons, as there was a time when there were no load and other events. Nowadays, load/error/progress handlers deprecate it.
Aborting request
We can terminate the request at any time. The call to xhr.abort() does that:
Synchronous requests
In other words, JavaScript execution pauses at send() and resumes when the response is received. Somewhat like alert or prompt commands.
Here’s the rewritten example, the 3rd parameter of open is false :
It might look good, but synchronous calls are used rarely, because they block in-page JavaScript till the loading is complete. In some browsers it becomes impossible to scroll. If a synchronous call takes too much time, the browser may suggest to close the “hanging” webpage.
Because of all that, synchronous requests are used very sparingly, almost never. We won’t talk about them any more.
HTTP-headers
XMLHttpRequest allows both to send custom headers and read headers from the response.
There are 3 methods for HTTP-headers:
XMLHttpRequest is not allowed to change them, for the sake of user safety and correctness of the request.
Once the header is set, it’s set. Additional calls add information to the header, don’t overwrite it.
Gets the response header with the given name (except Set-Cookie and Set-Cookie2 ).
Headers are returned as a single line, e.g.:
So, if we want to get an object with name/value pairs, we need to throw in a bit JS.
Like this (assuming that if two headers have the same name, then the latter one overwrites the former one):
POST, FormData
To make a POST request, we can use the built-in FormData object.
The form is sent with multipart/form-data encoding.
Or, if we like JSON more, then JSON.stringify and send as a string.
Upload progress
The progress event triggers only on the downloading stage.
That is: if we POST something, XMLHttpRequest first uploads our data (the request body), then downloads the response.
If we’re uploading something big, then we’re surely more interested in tracking the upload progress. But xhr.onprogress doesn’t help here.
Example of handlers:
Here’s a real-life example: file upload with progress indication:
Cross-origin requests
XMLHttpRequest can make cross-origin requests, using the same CORS policy as fetch.
See the chapter Fetch: Cross-Origin Requests for details about cross-origin headers.
Summary
Typical code of the GET-request with XMLHttpRequest :
There are actually more events, the modern specification lists them (in the lifecycle order):
The most used events are load completion ( load ), load failure ( error ), or we can use a single loadend handler and check the properties of the request object xhr to see what happened.
- фаза луны сегодня в барнауле какая сейчас
- Как кормить йоркширского терьера взрослого