【发布时间】:2014-08-17 21:33:46
【问题描述】:
是否可以在客户端使用 HTTP.get 来检索一些 json 数据并将其存储为字符串?
我需要从该站点https://blockchain.info/address/15cNko3ZtmYCba8GoaYsZ6GWFy1VCLgFji?format=json 获取 JSON 并将其存储为字符串以供以后解析。
上面的钱包地址是随机选择的。
【问题讨论】:
是否可以在客户端使用 HTTP.get 来检索一些 json 数据并将其存储为字符串?
我需要从该站点https://blockchain.info/address/15cNko3ZtmYCba8GoaYsZ6GWFy1VCLgFji?format=json 获取 JSON 并将其存储为字符串以供以后解析。
上面的钱包地址是随机选择的。
【问题讨论】:
您可以在客户端上执行HTTP.get。 As per the documentation 可用 Anywhere(客户端和服务器)
但是,您提供的示例与您的应用不在同一个域中,并且没有提供 Access-Control-Allow-Origin 标头以允许跨域请求。 So requests from the client will fail.
同源策略防止从一个文件或脚本加载 源自从另一个文档获取或设置文档的属性 起源。该政策可以追溯到 Netscape Navigator 2.0。
【讨论】:
尝试在应用程序开发选项卡的浏览器控制台中输入$.ajax("https://blockchain.info/address/15cNko3ZtmYCba8GoaYsZ6GWFy1VCLgFji?format=json");。
您可能会收到此错误作为响应:
XMLHttpRequest cannot load https://blockchain.info/address/15cNko3ZtmYCba8GoaYsZ6GWFy1VCLgFji?format=json. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access.
这是一个与 CORS 相关的问题,它本身就是一个完整的话题,所以我建议你在谷歌上搜索并了解它的含义。
接下来,如果您可以在尝试从中获取 json 的域上控制 CORS 设置,那么您需要允许来自您的 Web 应用程序域的跨源请求,这在使用亚马逊 S3 存储桶时是可能的,另一个 Web您设计的应用程序等...
如果你不能,那么恐怕你将不得不使用 Meteor.method 客户端来访问你的 Meteor 服务器,在那里你将使用 HTTP.get 获取 json 然后将其发送回 Meteor 客户端.
【讨论】: