没有“访问控制允许来源”标头,AngularJS
问题描述:
我试图建立一个我没有在我试图连接到服务器控件的快速演示现场。这里是我用来用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();
我已阅读多个地方尝试切换到method
但JSONP
这样做导致了解析错误。
尽管我已经考虑尝试构建一个server.js
文件并使用它运行NodeJS,但我并没有成功学习制作AJAX请求的基础知识,并将其代理到我的app.js.
我将不胜感激任何帮助,有人也许能够给我,有明确和容易遵循的步骤。
答
如果你正在运行一个Ajax调用不同来源(例如不同的主机,端口或协议),在此原点的服务器没有跨起源请求的支持,那么你就无法修复,从您的客户端。客户无法做任何事情。
如果服务器支持JSONP,你可以使用,但也需要特定的服务器支持。
从浏览器的网页,唯一的解决方案是:
- CORS目标服务器上的支持。
- JSONP(也需要在目标服务器上支持)。
- 建立自己的服务器,你有机会获得(或者在现有的网页域与CORS),然后让该服务器获取文件/数据对您和代理回给你。您可以编写自己的代理或部署预构建的代理。
- 找到一些您可以使用的现有第三方代理服务。
如果你有兴趣制作自己的node.js代理,你可以在这里看到一个简单的例子:How to create a simple http proxy in node.js?。
也是第三方代理服务是另一种 – charlietfl
@charlietfl - 我加了这样的选择。 – jfriend00
Upvoted。完全同意解决方案。这不是你的Web应用程序的问题。这是一个服务器。 @ jfriend00你可以发布第4点(第三方代理)的小参考吗?这对我来说是新东西,我想了解更多关于它 –