$ http.get()调用的Node Express Cross Origin

我做了一个简单的节点服务器,我需要它作为$http.get()调用的交叉原点,所以我添加所需的标题到app.use作为详细信息在这个答案。 最后服务器代码是 –

 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有angular色$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调用Cross Origin $http.get

您实际上不了解跨源资源共享如何工作。 跨请求请求应该在您请求的服务器上允许,而不是在您服务于您的页面的服务器上。

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

PS您已允许其他网站向您的网站发送请求,只需将此代码添加到您的快速应用中即可:

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