【问题标题】:https is working but http not in Hyperledger Fabrichttps 可以工作,但 http 不在 Hyperledger Fabric 中
【发布时间】:2019-03-14 06:38:06
【问题描述】:

我正在尝试实现Calling an HTTP or REST API from Transaction Processor Functions

所以当我请求 GET https APIs 时,它可以工作,但是当我尝试 http APIs 时,它不工作并抛出错误:

RequestError: TypeError: 获取失败

并且在浏览器控制台中因 API 而异:
网络::ERR_SSL_PROTOCOL_ERROR
网络::ERR_CONNECTION_CLOSED

我已经在 postman 中测试了 http API,它们运行良好。 这是代码:

transaction checkApi {
  o String api
} 

async function checkApi(tx) {

    const apiObj = await request.get({ uri: tx.api, json: true });
    console.log(apiObj);

});

是因为 CORS 吗?有人可以解释一下是什么问题吗?

【问题讨论】:

  • 对于浏览器(例如 Chrome)中的 ERR_SSL_PROTOCOL_ERROR - 在大多数情况下,此错误是由于服务器问题造成的,因为它可能需要客户端身份验证证书 - 您可以通过谷歌建议来解决- 另一个问题可能是浏览器中的日期和时间设置。否则建议标记javascript node.js 寻求帮助。
  • 所以这意味着它是浏览器问题而不是作曲家。但是当我在选项卡中浏览相同的 api 时,它正在工作。如果它不是作曲家问题,那么它至少应该完成交易,但是在将其作为类型错误提交时会抛出错误
  • 那么它很可能是 CORS 问题,是的。您可以在开发者工具下查看浏览器的网络监视器以查看请求信息吗?另请参阅此处的答案 2 / 3 -> stackoverflow.com/questions/42754388/…(对于未捕获的承诺)或此处 -> stackoverflow.com/questions/49343024/… 了解更多信息。
  • 有什么方法可以让它工作吗?禁用 CORS 或将少数 URL 列入白名单?

标签: hyperledger hyperledger-composer


【解决方案1】:

我认为您正在尝试通过 composer playground 执行此事务,并将您的网络部署到 Web 浏览器而不是本地结构服务器。 如果是这种情况,您将收到错误消息。因为这可能是 CORS 问题。 我遇到了同样的问题。

但是当在本地结构服务器上测试 Transaction 时,相同的 request.get() 对我有用。

您应该做的另一件事是尝试使用 request.get("你的网址");不要使用 json 标志。

【讨论】:

    猜你喜欢
    • 2012-03-20
    • 2020-02-18
    • 1970-01-01
    • 2013-08-18
    • 2014-03-17
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 2017-12-15
    相关资源
    最近更新 更多