Ошибка 404 на мобильном устройстве, но работает на браузере ПК - PullRequest
1 голос
/ 14 ноября 2011

Это может быть глупый вопрос ... но я пытаюсь сделать свое первое приложение, используя phonegap и dojo. Я могу использовать ajax и читать некоторые данные с сервера. Это прекрасно работает на эмуляторе Android. Я также могу ввести URL-адрес в браузере на рабочем столе и увидеть значение. Я использую пружину с объектами JSON.

Когда я набираю тот же URL в браузере телефона, я получаю ошибку 404. Может кто-нибудь сказать мне, почему? Я очень плохо знаком с разработкой мобильных приложений и чувствую, что что-то упустил.

URL является общедоступным.

Спасибо

UPDATE Используя тот же AJAX-вызов, я могу получить следующий URL http://search.twitter.com/search.json?q=bacon, который возвращает файл JSON из Twitter. Так что я не думаю, что это мой клиентский код. Есть еще идеи?

Ответы [ 4 ]

1 голос
/ 15 ноября 2011

wild догадки 1) ваш сервер может ожидать правильные заголовки

Accept: application/json

веб-браузеры по умолчанию используют символы подстановки (Accept: / )

2) ваш сервервозможно, отфильтровывать с помощью заголовков ua-agent и отклонять не веб-браузеры

0 голосов
/ 15 октября 2016

У меня были очень похожие симптомы в моем текущем проекте PhoneGap. Когда я пытался получить доступ к своему nginx / PHP бэкэнду с помощью вызова jQuery:

var jqxhr = $.post(SERVER_URL, {'some': 'parameters', 'another': 'parameter'}, null, "jsonp")
    .done(function (data) {
            // Success, do something...
    })
    .fail(function (data) {
            // Failed, do something...
    });

... сбой соединения с 404 при использовании SSL. Если SERVER_URL указывает на URL http, то вызов работает нормально. На сервере не было никаких перенаправлений. Согласно журналам сервера серверная часть была выполнена и вернула правильный вывод в формате JSON.

Код не работал только с Android 6.x (ранее не тестировался), но работал нормально с iOS 10.x (ранее не тестировался), а также с Firefox и Chromium.

Причина в том, что моя конфигурация nginx имела следующие параметры:

add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;

Похоже, что другие платформы не уважали эти заголовки, как Android.

0 голосов
/ 16 ноября 2011

Спасибо всем за помощь. В конце концов, nginx перенаправил мобильные запросы на сервер, где приложение не размещалось. Отсюда и 404 ошибки.

0 голосов
/ 16 ноября 2011

Недавно я столкнулся с подобной проблемой, случается, когда вы пытаетесь подключиться к http://localhost из эмулятора Android.посмотрите эту ветку, которая содержит хорошее решение -> Доступ к веб-серверу, работающему в Eclipse, снаружи рабочей станции

простое решение: если вы хотите получить доступ к localhost из эмулятора Android, вы должны использовать 10.0.2.2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...