使用azure-iothub SDK在Chrome中获取ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY

时间:2018-11-22 11:44:36

标签: azure-iot-hub azure-iot-sdk

我有一个简单的javascript类,它使用azure-iothub Node.js module在Azure IoT中心内创建/删除设备。

class AzureManager {
    constructor(options) {
      const { connectionString } = options;
      this.registry = iothub.Registry.fromConnectionString(connectionString);
    }

   /**
    * Gets some stats about the Iot Hub selected
    * @returns {Object} an object with the following properties:
    * totalDeviceCount, enabledDeviceCount, disabledDeviceCount
    */
   getStats() {
      return new Promise((resolve, reject) => {
          this.registry.getRegistryStatistics((err, stats, res) => {
              if (err) {
                  return reject(err);
              }

              return resolve(stats);
          });
      });
   }
}

我已经为该类开发了一个Jest测试,当我执行该测试时,所有测试都能顺利通过。 在Chrome中执行代码时,出现以下错误。

  

request.js:150个选项   https://pysensors.azure-devices.net/statistics/devices?api-version=2018-06-30   净:: ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY

我不知道我是否必须配置一些东西才能使其在所有最新版本的浏览器上都能正常工作。 我发现this forum post(某种程度上类似于this blog post)讨论了服务器端的密码套件问题,并强制客户端使用HTTP1 / 1,但是由于我使用的是SDK,我无法控制请求的执行方式。 谢谢

编辑:刚刚发现我正在使用的模块打算仅在服务器端使用。使用Firefox时,我没有SPDY问题,但是由于Azure不支持,因此我遇到了CORS问题。我在某处读到了它,但不是最优先考虑的事情。

1 个答案:

答案 0 :(得分:0)

微软官方的回应:

  

这恰好是IoTHub服务端的错误。 IoTHub服务可以   目前尚不支持HTTP / 2协议,但是由于该错误,我们会返回   HTTP / 2作为初始阶段ALPN扩展中受支持的协议   握手。我们将尽快修复此错误,但在此之前,您可以   将您的客户端配置为始终使用受支持的HTTP / 1协议   并且效果很好。

     

请在Azure IoT反馈渠道上对该功能进行投票,以便我们   可以优先考虑。谢谢!

     

HTTP 2.0支持

     

https://feedback.azure.com/forums/321918-azure-iot/suggestions/9958737-http-2-0-support

     

详细信息:   https://social.msdn.microsoft.com/Forums/azure/en-US/0cf59124-f8f0-4fb2-ba20-5666894341cb/errspdyinadequatetransportsecurity-error-on-rest-api-call-in-chrome?forum=azureiothub