2016-07-15 2 views
1

私は$http.get()コールのためにクロスオリジンである必要がある単純なノードサーバーを作ったので、app.useに必要なヘッダをthis答えとして追加します。最後に、サーバコードがある -

$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()は別の原点に呼びかけているで

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); 

から正確にどのようにクロスオリジンを呼び出すことができますか?$http.get

+1

あなたがあなた自身のウェブサーバ上のCORSを許可し、それがアップルのサーバ上で許可されるだろう待つのはなぜ? –

+0

私はノードで新しいです。もしyoeさんが..解決策を教えてください。 – URL87

+1

短い答え:CORSがサーバー上で許可されていない間にあなたのウェブページからのクロスドメインリクエストを行うことは不可能です。あなたはiTunesで制御できないので、それを行うことはできません –

答えて

1

クロスオリジンリソース共有がどのように機能するかは、実際は分かりません。クロスオリジンのリクエストは、あなたのページを提供しているサーバーではなく、リクエストしたサーバーで許可されるべきです。

あなたがそれをすることを許可されていない場合、あなたはアップルのウェブサイトへのリクエストをすることはできません。

P.S.あなたは明示アプリにこのコードを追加することによって、あなたのウェブサイトにリクエストを作るために他のウェブサイトを許可されています

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

'$ http.get( 'http://itunes.apple.com/search'、{...})'を呼び出してレスポンスJSON? – URL87

+2

これはできません。 –

+0

あなたのウェブページのjavascriptからそのような要求をすることはできません。 – Sergey