Я пытаюсь подключить сценарий к приложению Microsoft World-Wide Telescope. Последний прослушивает порт 5050 для команд. Он работает на том же компьютере, что и браузер (сейчас Chrome, но, насколько я могу судить, поведение такое же, как в Firefox 7 и IE 9).
Я отправляю заголовок «Access-Control-Allow-Origin: *» с исходным файлом html, чтобы попытаться устранить ограничения XSS как мою проблему.
Мой код для доступа к WWT следующий:
$.ajax({
type: 'POST',
url: url,
data: data,
crossDomain: true,
success: success,
dataType: dataType
});
url в данном случае - «http: //127.0.0.1: 5050 / layerApi.aspx? cmd = new & ...» (очевидно ... здесь сокращенное обозначение некоторых дополнительных параметров).
Посмотрев сетевую диагностику в Chrome, я вижу следующее:
Request URL:http://127.0.0.1:5050/layerApi.aspx?cmd=new&...
Request Headersview source
Accept:application/xml, text/xml, */*; q=0.01
Content-Type:application/x-www-form-urlencoded
Origin:http://gwheeler4
Referer:http://gwheeler4/conceptconnect.html
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.186 Safari/535.1
Запрос уходит - вижу, WWT создает новый слой. Однако я не получаю обратного звонка. Если я добавляю обратный вызов ошибки, который вызывается, но свойство error в объекте jqXHR просто "error", а статус равен 0. Если я смотрю сетевой запрос в Chrome, я вижу "(отменен)" в качестве статуса и никакого ответа .
Если я возьму тот же URL и вставлю его в новую вкладку браузера, я увижу, что ответ является ожидаемым XML.
Конечно, разница здесь в том, что это GET, а не POST, но я пробовал это в своем скрипте, и это не имеет значения.
Я очень озадачен этим и буду благодарен за любые свежие идеи.
источник
error
обратный вызов, чтобы увидеть, возвращается ли он с ошибкой?Ответы:
Если кто-то еще сталкивается с этим, проблема, которая у нас была, заключалась в том, что мы выполняли запрос ajax из ссылки и не препятствовали переходу по ссылке. Поэтому, если вы делаете это в
onclick
атрибуте, обязательно сделайтеreturn false;
это.источник
return false
в конецonsubmit
атрибута."return false;"
сообщает формам и ссылкам прервать действие. Первоначально это было предназначено для проверки формы javascript, где функция проверки возвращала бы false, если форма была недопустимой, останавливая отправку формы.e.preventDefault();
, гдеe
-onclick
параметр события.Если вы используете Chrome, вы не видите достаточно информации на стандартной сетевой панели Chrome, чтобы определить основную причину
(canceled)
запроса.Вам необходимо использовать,
chrome://net-internals/#events
который покажет вам кровавые детали отправляемого вами запроса, включая скрытые перенаправления / информацию о безопасности об отправленных файлах cookie и т. Д.например, следующее показывает перенаправление, которое я не видел в трассировке сети, вызванное тем, что мои файлы cookie не отправляются через поддомен:
t=1374052796448 [st= 1] +URL_REQUEST_START_JOB [dt=261] --> load_flags = 143540481 (DO_NOT_SAVE_COOKIES | DO_NOT_SEND_AUTH_DATA | DO_NOT_SEND_COOKIES | ENABLE_LOAD_TIMING | MAYBE_USER_GESTURE | REPORT_RAW_HEADERS | VALIDATE_CACHE | VERIFY_EV_CERT) --> method = "GET" --> priority = 2 --> url = "https://...." ... t=1374052796708 [st=261] HTTP_TRANSACTION_READ_RESPONSE_HEADERS --> HTTP/1.1 302 Moved Temporarily Content-Type: text/html Date: Wed, 17 Jul 2013 09:19:56 GMT ... t=1374052796709 [st=262] +URL_REQUEST_BLOCKED_ON_DELEGATE [dt=0] t=1374052796709 [st=262] CANCELLED t=1374052796709 [st=262] -URL_REQUEST_START_JOB --> net_error = -3 (ERR_ABORTED)
источник
В моем случае у меня было
type='submit'
это, когда я отправлял форму, страница перезагружалась до того, как произошло попадание ajax, поэтому было простое решениеtype="button"
. Если вы не укажете тип, он будетsubmit
по умолчанию, поэтому вам необходимо указатьtype="button"
type='submit'
=>type='button'
ИЛИ
Нет типа =>
type='button'
источник
У меня была аналогичная проблема. В моем случае я пытаюсь использовать веб-сервис на сервере apache + django (сервис был написан мной). У меня был тот же результат, что и у вас: Chrome говорит, что он был отменен, а FF делает это нормально. Если бы я попытался получить доступ к сервису непосредственно в браузере вместо ajax, он тоже сработал бы. Погуглил, я обнаружил, что некоторые новые версии apache неправильно устанавливали длину ответа в заголовках ответов, поэтому я сделал это вручную. С django все, что мне нужно было сделать, это:
response['Content-Length'] = len(content)
Если у вас есть контроль над службой, к которой вы пытаетесь получить доступ, узнайте, как изменить заголовок ответа на платформе, которую вы используете, в противном случае вам придется связаться с поставщиком услуг, чтобы решить эту проблему. Судя по всему, FF и многие другие браузеры могут правильно справиться с этой ситуацией, но дизайнеры Chrome решили сделать это, как указано.
источник
У меня была аналогичная проблема. Используя события chrome: // net-internals / #, я смог увидеть, что моя проблема связана с каким-то тихим перенаправлением. Мой запрос на получение запускался в сценарии загрузки. URL-адрес имел форму « http://example.com/inner-path », а 301 постоянно перенаправлял на «/ inner-path». Чтобы решить эту проблему, я просто изменил URL-адрес на «/ inner-path», и это устранило проблему. Я до сих пор не знаю, почему скрипт, который работал неделю назад, внезапно вызвал у меня проблемы ... Надеюсь, это кому-то поможет.
источник
(Использование веб-форм ASP.NET)
Моя проблема заключалась в том, что я пытался запустить Ajax из события щелчка кнопки отправки, у которой была настройка события щелчка на стороне сервера. Мне пришлось сделать кнопку простой кнопкой (т.е.
<input type="button">
)источник
У меня была такая же проблема, для меня я создавал iframe для временного использования, и я удалял iframe до завершения ajax, поэтому браузер отменил мой запрос ajax.
источник
Расширяя ответ @ Kazetsukai, вы можете столкнуться с этой проблемой, если вы делаете запрос AJAX от пользователя, нажимающего на ссылку.
Если вы настроите свою ссылку так:
<a href="#" onclick="soAjax()">click me!</a>
А затем обработчик javascript, подобный следующему:
Чтобы ваш браузер не переходил по ссылке и отменял любые выполняющиеся запросы, вы должны добавить
return false
илиe.preventDefault()
остановить распространение события click:soAjax() { $.ajax({ ... etc ... }); return false; }
Или:
источник
Когда запрос AJAX отбрасывается (если не запрос Cross-Origin), есть две возможности:
Решение для 1) : Добавить
return false;
илиe.preventDefault();
в обработчике событий.Решение для 2) : Добавить параметр тайм-аута при формировании запроса AJAX. Пример ниже.
$.ajax({ type: 'POST', url: url, timeout: 86400, data: data, success: success, dataType: dataType });
Для запросов из разных источников проверьте заголовки HTTP для совместного использования ресурсов между источниками (CORS).
источник
Я получил эту ошибку при выполнении запроса с использованием http на URL-адрес, для которого требуется https. Я предполагаю, что вызов ajax не обрабатывает перенаправление. Это так, даже если для параметра crossDomain ajax установлено значение true (в JQuery 1.5.2).
источник
В моем случае мод-перезапись Apache соответствовала URL-адресу и перенаправляла запрос на https.
Посмотрите запрос в chrome: // net-internals / # events.
Он покажет внутренний журнал запроса. Проверить перенаправления.
источник
У меня была такая же проблема, но в моем случае это была проблема с файлами cookie. Ребята, работающие над серверной частью, изменили путь к файлу cookie JSESSIONID, который устанавливается при входе в наше приложение, и на моем компьютере был старый файл cookie с таким именем, но со старым путем. Поэтому, когда я попытался войти в браузер (Chrome), отправил на сервер два файла cookie с именем JSESSIONID с разными значениями, что, по понятным причинам, смутило его, поэтому он отменил запрос. Это исправило удаление файлов cookie с моего компьютера.
источник
У меня была эта ошибка более жутким образом: вкладка сети и события chrome: // net-internals / # не отображали запрос после завершения js. При приостановке js в callcack ошибки на вкладке сети отображался запрос как (отменен). Постоянно вызывался ровно один (всегда один и тот же) из нескольких похожих запросов на веб-странице. После перезапуска Chrome ошибка больше не возникала!
источник
У меня был отменен в Firefox . Некоторые ajax-вызовы у меня работают отлично, но у коллеги, которому действительно пришлось его использовать, не получилось.
Когда я проверил это с помощью упомянутых выше приемов Chrome, я не обнаружил ничего подозрительного. При проверке в firebug он показывал анимацию загрузки после двух малозначительных вызовов и без вкладки результатов.
Решение было мега простым: зайти в историю, найти сайт, щелкнуть правой кнопкой мыши -> забыть сайт.
Забудьте, а не удалите.
После этого проблем больше нет. Я предполагаю, что это как-то связано с .htaccess.
источник
В моем случае это была отсутствующая косая черта в конце URL. Добавление косой черты в конце решило мою проблему.
источник
Для случая Dropzone.js. В моем случае это было вызвано тем, что значение
timeout
параметра по умолчанию было слишком низким. Так что увеличивайте его по своим потребностям.{ // other dropzone options timeout: 60000 * 10, // 10 minutes ... }
источник
У меня была эта проблема с конкретной сетью 3G.
Он всегда терпел неудачу при запросах DELETE с
net_error = -101
событиями chrome: // net-internals / #.Другие сети работали нормально, поэтому я предполагаю, что это был неисправный прокси-сервер или что-то в этом роде.
источник