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