2011-11-03 54 views
3

我正在尝试从HTML5应用程序向本地网络服务器发出简单的AJAX请求。 但是,由于未从Web服务器提供客户端代码,因此我得到 “Access-Control-Allow-Origin不允许原始位置null”错误。无法从HTML5应用程序对本地网络服务器进行AJAX调用

我试着在下面的帖子中描述的一切,但仍然不能正常工作:XmlHttpRequest error: Origin null is not allowed by Access-Control-Allow-Origin

如果我发布的互联网托管服务器,客户端应用程序的作品在我的服务器代码。 但我希望它能与我的本地MAMP服务器在同一台笔记本电脑上运行。

1)在本地网络服务器,添加以下到我的PHP控制器:

header('Access-Control-Allow-Origin: *'); 

2)这里是我的HTML5客户端应用程序。因为服务器支持CORS,所以不需要JSONP。

<html> 

<head> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.js"></script> 
    <base href='http://192.168.15.12/'></base> <!-- local MAMP server -->  
    <script> 

     $(document).ready(function() { 
       $('#leadButton').click(function(){ 

        $.getJSON(
         'get/leaderboard', 
         function(data){ 
          var leader; 

          leader = "<div> The top leader is from local webserver is: " + data[0].name + "</div>"; 
          $('#leaderboard').append(leader); 
          console.log(data); 
         } 
        );  
       }); 
     }); 
    </script> 
</head> 

<body> 
    <div id="leaderboard">Leaderboard 
     <button id="leadButton">Get Leaderboard</button> 
    </div> 
</body> 

3)当我调用客户端应用程序(文件:///Users/John/Desktop/index.html)从Chrome中,并点击leadButton”按钮,这里所产生的请求/响应头:

Request URL:http://192.168.15.12/get/leaderboard 
Request Method:OPTIONS 
Status Code:403 Forbidden 

Request Headers 
Access-Control-Request-Headers:Origin, X-Requested-With, Accept 
Access-Control-Request-Method:GET 
Origin:null 

Response Headers 
Connection:Keep-Alive 
Content-Length:227 
Content-Type:text/html; charset=iso-8859-1 
Date:Thu, 03 Nov 2011 19:03:27 GMT 
Keep-Alive:timeout=5, max=100 
Server:Apache 

我缺少什么 感谢您的帮助

回答

4

我发现这个问题:

到本地网络服务器(192.168.15.12)请求需要的完整URL在$ .getJSON请求指定: “http://192.168.15.12/get/leaderboard”

“base”标记没有在jQuery调用的URL中加上“http://192.168.15.12/”。

我还需要以下Apache的配置添加到我的.htaccess文件,从而实现跨源资源共享(CORS)(这样在PHP没有可靠地工作):

Header set Access-Control-Allow-Origin * 
0

accesing:?

file:///Users/John/Desktop/index.html 

不起作用。由于file:///与localhost不同。

您需要访问http://192.168.15.12/index.html这个工作

+0

但我建设客户端应用程序;它不是从网站提供的,所以你的建议是行不通的。 “file:///Users/John/Desktop/index.html”适用于我的服务器代码部署在互联网服务器(例如www.myexternalserver.com)上,但不在本地网络服务器(192.168.15.12)上部署。 – JMan

相关问题