Angularjs $http.get()调用的节点表达式跨源

Angularjs $http.get()调用的节点表达式跨源,angularjs,node.js,express,cross-domain,Angularjs,Node.js,Express,Cross Domain,我做了一个简单的节点服务器,我需要它是$http.get()调用的跨源,所以我向应用程序添加了所需的头。在回答中使用作为详细信息。最后,服务器代码是- var express = require('express'); var app = express(); var port = process.env.PORT || 3000; app.use(express.static('.')); app.all('/', function(req, res, next) { res.hea

我做了一个简单的节点服务器,我需要它是
$http.get()
调用的跨源,所以我向
应用程序添加了所需的头。在回答中使用
作为详细信息。最后,服务器代码是-

var express = require('express');
var app = express();

var port = process.env.PORT || 3000;

app.use(express.static('.'));

app.all('/', function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "X-Requested-With");
  next();
 });

app.listen(port);
console.log('server runs on port: ' + port); 
在我的
index.html
中,有一个
$http.get()
调用另一个原点-

$http.get('http://itunes.apple.com/search', {
    term: 'johnson'
});
但此调用仍被浏览器拒绝并返回错误-

 XMLHttpRequest cannot load https://itunes.apple.com/search. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.

如何正确地从
index.html
调用跨源
$http.get

您实际上不了解跨源资源共享是如何工作的。跨源请求应该允许在向其发出请求的服务器上进行,而不是在为页面提供服务的服务器上进行

所以,答案是你不能向苹果网站提出请求,如果他们不允许你这么做

注意:您已允许其他网站通过将此代码添加到您的express应用程序来向您的网站提出请求:

  app.all('/', function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "X-Requested-With");
  next();

为什么你在你自己的Web服务器上允许CORS,并等待它在Apple服务器上被允许?我是node的新手,请给我一个解决方案,如果你有..简短回答:当服务器上不允许CORS时,从你的网页发出跨域请求是不可能的。因为你无法控制itunes,所以你无法控制我如何调用
$http.get('http://itunes.apple.com/search', {...})
并返回响应JSON?您不能这样做。您不能从网页的javascript发出这样的请求。从节点的js文件发出这样的请求是可能的吗?如果您真的想解决这个问题,您应该向web服务器添加函数,该函数将从nodejs向该页面发出请求,然后从网页的javascript调用它