Клиент jQuery не примет ответы моего сервера

Несколько дней назад я написал веб-сервис на python с flask для отправки JSON-данных между моим телефоном (приложение для Android) и моим сервером.

Все работало нормально: я мог отправлять и получать данные через GET, POST с моим приложением для Android, а также с программой «cURL».

Тогда я решил создать простое веб-приложение в качестве клиента для моего веб-сервиса, и началась борьба. Итак, я написал самый простой клиент и сервер, который я могу себе представить:

Client.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>TestClient</title>

<!-- jQuery -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js</script></head>
<body>

<script type="text/javascript">
$.get("http://SERVER_URL/test/1", function(data,status){
alert("Data: " + data + "\nStatus: " + status);
});

</script>

</body>
</html>

Мои ответы Python не будут отображаться в моем браузере, поэтому я также создал очень простой PHP-сервер с PHP-фреймворком Slim, работающим на моем сервере Apache2 в качестве виртуального хоста:

index.php:

// Slim import and basic stuff...

// GET route
$app->get('/test/:id', function ($id) {
echo "This is test $id";
});

Поэтому, когда я вручную вызываю этот сайт (из Firefox или Chrome), я получаю простую строку «Это тест № 1», которая отображается в моем браузере, как я и ожидал

НО как только я запускаю свой «Client.html», я ничего не получаю: нет оповещений или чего-то еще. Когда я использую консоль Firefox для проверки на наличие ошибок или чего-то подобного, все тоже выглядит нормально:

ЗАПРОС:

02:49:03.000
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:28.0) Gecko/20100101 Firefox/28.0
Origin: null
Host:   213.165.80.252
Connection: keep-alive
Accept-Language:    de,en-US;q=0.7,en;q=0.3
Accept-Encoding:    gzip, deflate
Accept: */*

ОТВЕТ:

Response-Header Δ91ms
X-Powered-By:   PHP/5.4.4-14+deb7u14
Vary:   Accept-Encoding
Server: Apache/2.2.22 (Debian)
Keep-Alive: timeout=5, max=100
Date:   Sun, 05 Oct 2014 00:49:04 GMT
Content-Type:   text/html
Content-Length: 15
Content-Encoding:   gzip
Connection: Keep-Alive

Так что, в конце концов, я думаю, что-то не так с моим сервером. Что-то вроде «Ответы не обрабатываются JavaScript». Причины моей мысли:

  • Клиент не будет работать с Python (колба) ИЛИ slim (PHP) работает на моем сервере
  • Клиент отлично работает с другими веб-сервисами, например http://api.openweathermap.org/data/2.5/weather?q=London/

Что на самом деле работает:

  • Сервер отлично работает с андроидами httpRequest
  • Сервер отлично работает с cURL или прямым звонком через браузер

Заранее спасибо!

0

Решение

После нескольких дней (!) Исследований я наконец нашел очень простое решение: контроль доступа HTTP (CORS).

Короче говоря — следующий код исправил проблему.

Я должен был сделать следующие шаги на моем сервере:

1.) Активируйте модуль заголовков для apache:

server# a2enmod mod_headers

2.) Измените файл VirtualHost «myservice.conf» на моем сервере и добавьте следующую строку между ними.

Header set Access-Control-Allow-Origin "*"

3.) Проверьте наличие ошибок в вашем файле:

server# apachectl -t

4.) перезагрузите и перезапустите apache

server# service apache2 reload && service apache2 restart

5.) Наслаждайтесь подключением сервера клиента!

Надеюсь, я смогу помочь любому, у кого такая же проблема!

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]