2016-09-06 2 views
3

У меня есть веб-сайт, который работает на www.example.com. Когда страница загружается, вызывается файл JavaScript, который вызывает вызов Ajax для xyz.subdomain.example.com.Ajax call failing, но только на определенном носителе сотовой связи

Все работает на каждой платформе/браузере, который я тестировал, за исключением одного. Вещи терпят неудачу, когда я запускаю это на своем мобильном телефоне Android (независимо от используемого браузера, хотя все работает, если я включаю WiFi). Тем не менее, все работает правильно на сотовый телефон моей жены, который соединяется с другим носителем (да, у нас есть 2 компании - длинный рассказ).

Когда что-то не получается, статус, который я получаю, равен 0 без дополнительного текста. Я чувствую, что это может быть проблемой CORS, но кто может позвонить? Я бы предположил, что браузер работает, я бы поверил ОС, но я не могу согласиться с тем, что оператор делает это.

Есть ли другое объяснение, что происходит? Любая идея, как решить эту проблему?

EDIT

Я сделал немного прогресса, но не решили проблему. Спасибо всем, кто помог.

Мое первоначальное объяснение немного упрощено. Я на самом деле пытаюсь перейти на random.xyz.subdomain.example.com, а затем посмотреть, что происходит на DNS-сервере (который я контролирую).

В любом случае, я решил установить termux, и это здорово. Вот что я нашел:

dig random.xyz.subdomain.example.com 

Решает правильно. FWIW, Google DNS используется здесь.

curl random.xyz.subdomain.example.com 

Полученной Ошибка: завиток: (6) Не удалось разрешить хост random.xyz.subdomain.example.com

ОК, это было неожиданно. Домен разрешается с помощью dig, но проблема с завихрением.

На данный момент я превращаюсь WiFi на по телефону

curl random.xyz.subdomain.example.com 

Связка данных возвращается корректно.

Это кажется немного странным. Я думаю, это означает, что оператор не проблема, это телефон. Или, более конкретно, мобильный код в телефоне, потому что WiFi работает красиво. Это правильно? Что еще я должен проверить?

И если это означает что-то, что телефон является Samsung Galaxy Гранд Prime (SM-G530W) работает Android 5.1.1

EDIT 2

Я был обеспокоен различным поведением между рыть и завихнулся и начал изучать это. Я видел, как некоторые люди ссылаются на эту проблему, но не полностью ее решают. Я также заметил, что поведение, которое я нашел на моем телефоне, также можно было дублировать с экземпляра экземпляра AWS Linux.

Я также понял, что процесс разрешения имени сервера имен, который контролировал зону для random.xyz.subdomain.example.com, был очень сложным. Он состоял из нескольких CNAME через ресурсы, контролируемые тремя различными компаниями.Весь этот процесс работает, но, по-видимому, не для определенных случаев.

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

+1

Может быть проблемой DNS для перевозчика. Вы можете попробовать отладить с помощью chrome и посмотреть запрос, который делает ваш Android, и то, что вы получаете в ответ с сервера. – Dekel

+0

Если вы используете телефон Android, вы можете подключить его к Chrome на своем ПК и отладить страницу, включая сетевой трафик и т. Д. Это может по крайней мере дать некоторые подсказки о том, как выглядит запрос и ответ – Phil

ответ

1

Поместите «тестовую» страницу по адресу xyz.subdomain.example.com и получите прямой доступ к ней по телефону с проблемой, используя тот же браузер.

Если вы не можете попасть на тестовую страницу, обратитесь к поставщику (и у вас есть тестовая страница, чтобы показать их).

Если вы можете получить доступ к тестовой странице в браузере, но не с вызовом ajax, происходит что-то очень странное.

Единственное, что я могу придумать, это сам телефон имеет какой-то дерьмовый код, который переопределяет запрос из-за path в URL-адресе ajax-запроса. Я видел это раньше, и было сложно отладить. Чтобы проверить эту дурацкую идею, попробуйте переименовать запрошенный файл ajax.

Редактировать: Как сказал Фил ниже. Возможно, неплохо было бы обменять SIM-карту на вашу жену, чтобы перекреститься, если это проблема с перевозчиком или телефоном.

+0

OP говорит, что он работает на WiFi, поэтому я не думаю, что ваш последний абзац применяется – Phil

+1

@Phil Вы не можете доверять кодам мобильных телефонов. Возможно, «код дерьма» срабатывает только при не-Wi-Fi-подключении. – Tigger

+1

Хорошая точка. OP мог провести некоторые тесты изоляции, заменив SIM-карту своей женой. Сузили бы проблему как к телефону, так и к перевозчику. – Phil

4

На андроиде есть много способов отладить это, возможно, самым простым является подключение удаленного отладчика хром к проблемному телефону и проверка консоли и вкладки сети для дальнейших объяснений.

Если это не поможет, укажите ваш провайдер isp/cell, модель телефона, на всякий случай, это известная «функция».

Вы можете проверить свой удаленный ip с точки зрения сервера или просто спросить Google «что такое мой ip», «что такое мой пользовательский агент». Может случиться так, что приложения безопасности/конфиденциальности/другие хорошие или плохие (иногда системные) приложения захватывают HTTP-трафик.

В случае, если это окажется проблемой в сети, и вы знакомы с консолями, получение такого приложения, как termux, может помочь. Стандартные инструменты, такие как curl, ping, traceroute и т. Д., Могут помочь определить основную причину.

+0

termux - хорошая идея. Я попробовал это, и произошла какая-то странность, которая задокументирована как редактирование исходного сообщения. –

Смежные вопросы