jQuery客户端不会接受我的服务器响应

jQuery客户端不会接受我的服务器响应

问题描述:

几天前,我用烧瓶写了一个python web服务,以在我的手机(android应用程序)和我的服务器之间发送一些JSON数据。jQuery客户端不会接受我的服务器响应

一切工作正常:我可以发送和接收数据通过GET,POST与我的Android应用程序和程序“cURL”。

然后,我决定创建一个简单的Web应用程序作为我的Web服务的客户端,并开始了斗争。所以我写了最简单的客户端和服务器,我可以想像:

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> 

所以我也创建了一个非常基本的PHP的服务器与我的Python的反应将不会显示在浏览器在PHP框架苗条我的Apache2服务器上运行的虚拟主机:

的index.php:

// Slim import and basic stuff... 

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

所以,当我手动调用这个网站(从Firefox或Chrome)我得到一个简单的“这是测试#1”在浏览器中显示的字符串,如我所料

只要我跑我的“客户端。 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可处理”。我的想法的原因是:

什么是真正的工作:

  • 服务器正常工作与机器人的HttpRequest
  • 服务器通过浏览器正常工作与卷曲或直接调用

预先感谢您!

+1

关闭脚本标签:'

+0

实际需要'”>' – 2014-10-05 01:09:51

+0

检查你的控制台 – 2014-10-05 01:18:53

经过一段时间(!)的研究,我终于找到了非常简单的解决方案:HTTP访问控制(CORS)。

长话短说 - 下面的代码解决了这个问题。

我不得不采取以下步骤我的服务器上

1。)激活头模块的Apache:

server# a2enmod mod_headers 

2)修改虚拟主机文件在我的服务器上“myservice.conf”,并添加之间以下行。

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

3)检查您的文件中的任何错误:

server# apachectl -t 

4)重新加载并重新启动Apache

server# service apache2 reload && service apache2 restart 

5)享受服务器的客户端连接!

希望我可以帮助任何人有同样的问题!