【发布时间】:2016-11-02 20:07:29
【问题描述】:
我正在开发一个 AngularJS 网络应用程序,我正在通过在本地运行该应用程序进行测试,例如它不在服务器上。我一直遇到以下错误:
跨域请求被阻止:同源策略不允许读取远程资源(原因:CORS 标头“Access-Control-Allow-Origin”缺失)。1(未知)
我的 SO 研究告诉我这是服务器端的错误,但我已成功从模拟器中运行的 iOS 应用程序中获取数据,并成功使用了 Postman。
根据建议,我正在通过 http-server 运行该应用程序。同样的问题。
我添加了一个结果相同的简单测试用例:
$http.get("http://www.yahoo.com")
.then(function (response) {
alert("Search Results: " + response);
}, function(error) {
alert("Could not get to Yahoo");
});
这完全令人费解。
【问题讨论】:
-
“本地”是什么意思?您需要一个 http 服务器来执行 ajax 请求。如果您从 file:/// url 加载页面,则无法向服务器发出 ajax 请求
-
^ 如果您让浏览器从直接文件路径呈现 html,则无法执行异步请求。如果您正在使用 node / apache / python / etc. 等运行本地服务器,那么您可以在本地服务器上启用 CORS 标头,然后您应该在生产服务器上复制它。这里还有一个重要的问题:你是用 Angular 1 还是 Angular 2 开发的?
-
另外,iOS 是如何参与到您的架构中的?您正在开发 Angular 2 + nativescript 应用程序吗?还是 ionic + Angular 1 应用程序?如果是这种情况,您尝试向哪个服务器发出异步请求,该服务器的环境是什么?
标签: javascript ios angularjs rest cors