我正在开发一个 AngularJS 网络应用程序,我正在通过在本地运行该应用程序进行测试,例如它不在服务器上。我一直遇到以下错误:
跨源请求被阻止:同源策略不允许读取位于(原因:缺少 CORS header “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");
});
这完全令人费解。
最佳答案
基于此评论:
I'm developing an AngularJS web app and I'm testing by running the app locally, e.g. it's not on a server
那么这不起作用的原因很明显:如果您不是从网络服务器运行 javascript(http://而不是 file:///).这是一种几乎所有浏览器都内置的安全措施。您可以通过使用某些标志启动浏览器来解决这个问题;例如,对于 Chrome,您可以从命令行 chrome --allow-file-access-from-files file:///[PATH_TO_FILE]
但是建议您只从网络服务器运行 javascript。这非常简单,您可以使用节点包 http-server或 Python 的 SimpleHTTPServer直接从文件所在的目录提供文件。
关于javascript - AngularJS Web App 缺少 CORS header 'Access-Control-Allow-Origin',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38128008/