【问题标题】:API only works when fiddler is runningAPI 仅在 fiddler 运行时有效
【发布时间】:2015-06-30 18:16:41
【问题描述】:

我编写了一个实用应用程序,用于通过其余 API 将数据加载到 shopify。

有一个奇怪的错误,其中 api 仅在我运行 Fiddler 时才有效。

知道发生了什么吗?我确定这是配置问题而不是代码问题。

当 Fiddler 运行时,网络访问是通过 127.0.01:8888 上的代理进行的。

我在 SSL 方面不够先进,无法解决这个问题。您是否需要自签名证书才能连接到 SSL API。

我发现一些帖子建议设置 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls 但这并没有解决问题!

【问题讨论】:

    标签: asp.net-mvc api ssl shopify


    【解决方案1】:

    >> 是否需要自签名证书才能连接到 SSL API。

    我们的应用程序遇到了类似的问题。如果 API 有任何证书错误(在我们的例子中,我们使用的是自签名证书),浏览器将不允许您与 API 交互。

    解决方案:安装您的根证书,以便浏览器开始使用您的自签名证书。

    >> 有一个奇怪的错误,API 仅在我运行 Fiddler 时才有效。知道发生了什么吗?我确定这是配置问题而不是代码问题。

    每当您在 fiddler 中启用 HTTPs 流量解密(请参阅下图以在 fiddler 中启用此设置),都会发生以下情况。

    1. Fiddler 将自动安装其根证书
      “DO_NOT_TRUST_FiddlerRoot”到浏览器的 CA 列表。
    2. Fiddler 将使用您 API 的自签名证书来解密 HTTP 流量。
    3. 再次提琴手将使用提琴手签名加密相同的 HTTP 流量
      证书,即对于您的所有 API 调用都将有提琴手签名 证书

    由于用户浏览器信任提琴手签名的证书(由于步骤#a),您不会看到任何证书错误。

    希望这些信息对您有所帮助!

    【讨论】:

      【解决方案2】:

      原来我将 SSL 类型设置为 SSL3。

      即我有这个代码 ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3; 并且 shopify 不再使用 SSL3。

      原来这与安装证书无关。

      【讨论】:

      • 我在使用 RestSharp 连接 Salesforce REST API 时遇到了同样的问题。 Salesforce 不支持旧的安全协议,因此设置 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;解决了
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-05
      • 1970-01-01
      • 2011-06-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多