2012-09-20 127 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

相关问题