【问题标题】:WSO2 APi Manager Response Code 0WSO2 APi 管理器响应代码 0
【发布时间】:2016-07-21 14:38:33
【问题描述】:

我正在尝试在现有的微服务项目上使用 WSO2 API Manager 1.10.0,并按照 WSO2 教程使用 REST API。

我已经在我的计算机上安装了它以及我的应用程序的副本,并配置了 AM 来管理对我的资源的请求(GET、POST 和 DELETE),但我总是获得带有响应标头的“响应代码 0”

{
   "error": "no response from server"
}

尝试使用高级 REST 客户端联系我的应用程序,我得到 200 的正确结果。

我的 API 在标头中使用令牌来验证通过的用户,所以我实现了一个没有身份验证的虚拟 API,但我仍然遇到同样的问题。

我也用我们的测试服务器尝试了云版本,但仍然获得相同的结果。 我找到了这个指南http://wso2.com/blogs/cloud/video-setting-up-custom-url-for-api-store-and-gateway/,但我不知道这是否可以解决 localhost 中的问题。

【问题讨论】:

    标签: wso2 wso2-am api-manager


    【解决方案1】:

    WSO2 API Cloud 中设置自定义网址不会有帮助。那是为了不同的目的。您可以做两件事。

    1. 如果您有兴趣继续使用云版本,可以从他们那里获得帮助。您可以发送支持请求,云团队会提供帮助。

    2. 您可以对本地实例进行故障排除。这样做时,首先,尝试通过 curl 调用您的 api 并查看它是否得到响应。有时,您的 api 可以正常工作,但由于某些原因,结果可能无法到达 api 控制台。

    如果 curl 工作正常,您可以查看日志以查看是否打印了任何错误。还有一些问题:

    1. 您的后端服务是通过 http 还是 https 公开的?
    2. 如果是 https,那么如果它的证书不是 CA 签名的,那么 API Manager 将在握手期间失败。如果是这样,您必须将证书添加到 api manager client-truststore.jks
    3. 在云场景中,您的后端应该可以从互联网访问,并且证书故事也适用于云。

    【讨论】:

    • 谢谢你的回答,我试过云版本只是为了排除这个问题和我的安装之间的关系。我已经在转储 API 中插入了调试,它收到了正确的请求,但客户端上仍然没有响应,curl 报告“(60)SSL 证书问题:无法获取本地颁发者证书”。我在本地主机上使用 http,在服务器上使用 http 和 https,但是 API Manager 的证书无效,我尝试将其导出为自证书但 chrome 仍然报告不安全的连接。
    • 如果您在 WSO2 API Cloud 中尝试 curl,它不会抱怨证书。在您的本地部署中,它会抱怨,因为证书不是 CA 签名的。您可以通过使用 -k 选项调用 curl 来摆脱这种情况。您在 curl 的云版本中的结果是什么?
    • 现在我可以通过休息客户端访问我的资源,但由于“返回状态 0”错误,我仍然无法使用 API Manager 的 Web 界面测试它们。我不打算使用云版本,因为 API 管理器必须安装在我们的服务器上,但问题仍然存在。
    【解决方案2】:

    您是否尝试使用 swagger 控制台(或任何 Web 应用程序)访问 api。您可能会遇到此问题的原因有几个。一个可能是浏览器中没有安装证书。

    如果发生这种情况,您应该会在 api 管理器控制台中看到一些错误日志(与 CA 相关的内容未找到)。首先,您可以复制后端 url(swagger 控制台显示它用于发送请求的 url)并将其粘贴到新的浏览器窗口并将证书安装到浏览器。

    您还可以使用 firebug 等工具了解该问题并检查请求。 (会显示不连接AM的错误)

    【讨论】:

    • 谢谢,可能我的问题与无效证书有关,我尝试将丢失的证书保存在 chrome 中(点击红色锁 -> 详细信息 -> 查看证书 -> 保存到文件)和将其作为“受信任的根证书”导入,但 url 仍然导致不安全。我怎样才能摆脱它?如果我从192.168.123.45:9443/...(默认情况下WSO2 使用机器的IP)而不是localhost:9443/... 下载证书有什么不同吗?我都试过了
    • 导入从 chrome 下载的证书作为中间证书颁发机构和受信任的根证书颁发机构,使用正确的密钥(除了我的令牌)设置标头参数“授权”并在 Advanced Rest Client 中启用 XHR我能够通过 API Manager 提供的 https URL 获得正确的响应,但我仍然使用 WSO2 网络界面得到“服务器没有响应”,并且页面仍然被报告为不安全。
    • WSO2 产品带有自签名证书。这就是为什么它显示 url 不安全。您可以将 CA 签名证书添加到产品中。见wso2.com/library/knowledge-base/2011/08/…
    【解决方案3】:

    我终于找到问题了:API Manager 不接受纯文本响应,使用 JSON 响应解决了问题。

    使用其他媒体类型,例如 XML 或 TEXT/HTML,它会报告 406,而纯文本则返回错误 0。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多