No' Access-Control-Allow-Origin'标题呈现AngularJS

时间:2016-07-24 23:55:33

标签: javascript python angularjs ajax node.js

我正在尝试构建一个快速演示站点,我无法控制我尝试连接的服务器。这是我用AngularJS构建它的代码。我通过一个简单的Python HTTP Server运行该文件,并在localhost:8000中查看它。     var retrieveAppliances = function(){         console.log('尝试检索设备列表。');

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

我已经阅读了多个地方尝试将method切换为JSONP,但这样做会导致解析错误。

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

我将非常感谢有人可以给我的任何帮助,并且有明确且易于遵循的步骤。

1 个答案:

答案 0 :(得分:4)

如果您正在运行对其他来源的Ajax调用(例如,不同的主机,端口或协议),并且该来源的服务器不支持跨源请求,那么您无法从客户端修复该问题。你无法从客户那里做到。

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

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

  1. 目标服务器上的CORS支持。
  2. JSONP(还需要目标服务器上的支持)。
  3. 设置您有权访问的服务器(在现有页面域或CORS上),然后让该服务器为您获取文件/数据并将其代理给您。您可以编写自己的代理或部署预构建的代理。
  4. 查找您可以使用的现有第三方代理服务。
  5. 如果您对制作自己的node.js代理感兴趣,可以在此处看到一个简单示例:How to create a simple http proxy in node.js?