2016-07-24 100 views
0

我试图建立一个我没有在我试图连接到服务器控件的快速演示现场。这里是我用来用AngularJS构建它的代码。我通过一个简单的Python HTTP Server运行该文件,并在localhost:8000上查看它。 var retrieveAppliances = function(){ console.log('试图检索设备列表。');没有“访问控制允许来源”标头,AngularJS

var requestUrl = '****'; 
    $http({ 
     method: 'GET', 
     url: requestUrl, 
    }) 
    .then(function (response) { 
     console.log(response); 
    }); 
}; 
retrieveAppliances(); 

我已阅读多个地方尝试切换到methodJSONP这样做导致了解析错误。

尽管我已经考虑尝试构建一个server.js文件并使用它运行NodeJS,但我并没有成功学习制作AJAX请求的基础知识,并将其代理到我的app.js.

我将不胜感激任何帮助,有人也许能够给我,有明确和容易遵循的步骤。

回答

4

如果你正在运行一个Ajax调用不同来源(例如不同的主机,端口或协议),在此原点的服务器没有跨起源请求的支持,那么你就无法修复,从您的客户端。客户无法做任何事情。

如果服务器支持JSONP,你可以使用,但也需要特定的服务器支持。

从浏览器的网页,唯一的解决方案是:

  1. CORS目标服务器上的支持。
  2. JSONP(也需要在目标服务器上支持)。
  3. 建立自己的服务器,你有机会获得(或者在现有的网页域与CORS),然后让该服务器获取文件/数据对您和代理回给你。您可以编写自己的代理或部署预构建的代理。
  4. 找到一些您可以使用的现有第三方代理服务。

如果你有兴趣制作自己的node.js代理,你可以在这里看到一个简单的例子:How to create a simple http proxy in node.js?

+0

也是第三方代理服务是另一种 – charlietfl

+0

@charlietfl - 我加了这样的选择。 – jfriend00

+0

Upvoted。完全同意解决方案。这不是你的Web应用程序的问题。这是一个服务器。 @ jfriend00你可以发布第4点(第三方代理)的小参考吗?这对我来说是新东西,我想了解更多关于它 –