2012-09-20 125 views
9

當我嘗試使用Meteor.http.call("GET")方法在Meteor中調用外部服務器進行JSON查詢時,出現錯誤消息「Access-Control-Allow不允許-起源」。Meteor.http.call不允許通過訪問控制 - 允許來源

如何讓我的流星應用程序能夠對其他服務器進行HTTP調用? 現在我在localhost上運行它。

我運行的代碼是這樣的:

Meteor.http.call("GET", 
       "http://api.vasttrafik.se/bin/rest.exe/v1/location.name?authKey=XXXX&format=json&jsonpCallback=processJSON&input=kungsportsplatsen", 
        function(error, result) { 
          console.log("test");  
         } 
       ); 

回答

4

有類似這樣的StackOverflow上的其他問題。

當您從客戶端(AJAX)執行此操作時,您受限於您嘗試連接的服務器。

一種方法來解決這個問題是如果你有機會到外部服務器,您可以修改頭文件,以允許部分或全部來源自:

Access-Control-Allow-Origin: * 

但是,如果放在通話服務器端並沒有提供回調函數,該調用將會同步進行,因此不會與AJAX一起使用,而應該成功。

這裏的

Meteor.methods({checkTwitter: function (userId) { 
    this.unblock(); 
    var result = Meteor.http.call("GET", "http://api.twitter.com/xyz", {params: {user: userId}}); 
    if (result.statusCode === 200) return true 
    return false; 
}}); 
+0

你怎麼能添加到您的響應對象?所以它會啓用CORS或類似的東西?代碼片段可能? – garmoncheg

相關問題