【问题标题】:NTLM requests in K6 and .NEТ CoreK6 和 .NEТ Core 中的 NTLM 请求
【发布时间】:2020-09-09 12:42:27
【问题描述】:

我使用 NTLM auth 编写了我的 API 的负载测试(这里我另外检查 NTLM 授权用户是否存在于数据库中)。在请求期间:

  var url = 'https://login:*****@localhost:xxxx/api/authorization/logon';
  var payload = { };

  var params = {
    headers: {
      'Content-Type': 'application/json'
    },
  };

   let response = http.post(url, params, {auth: "ntlm"});  
   check(response, {
    'status is 200': (r) => r.status === 200
    });
}

我有一个错误:

error="Post "https://user:*****@localhost:xxx/api/authorization/logon": 流错误:流 ID 3;HTTP_1_1_REQUIRED"。 p>

为什么? Kestrel 服务于 HTTP/1.1

【问题讨论】:

    标签: asp.net-core-webapi ntlm k6


    【解决方案1】:

    这是Go标准库的HTTP客户端操作方式的问题,详细描述here,其中对于HTTPS端点,连接被强制升级到HTTP/2.0,is not supported by the NTLM protocol

    我不确定,但也许您可以在 Kestrel 中禁用此连接升级。

    【讨论】:

    • 所以我们必须使用自定义 HTTP 客户端?
    • 你是说在k6里面?我认为这行不通,因为 k6 旨在与 Go 内部 HTTP 库一起使用,并且由于它也不支持 NodeJS 和浏览器 API,因此您不能使用 JavaScript 代码中的自定义 HTTP 客户端,除非您集成一个自己(即将自定义 HTTP 客户端添加到 k6 源代码)。
    • 好的,我明白了。谢谢你,穆斯塔法!
    • @MostafaMoradian,我不认为你是正确的。 Go 标准库(也就是 k6)不会强制 HTTP/2 连接,它会将支持 HTTP/2 的服务器的 HTTPS 连接升级到该协议,否则使用 HTTP/1.1。因此,我认为这种情况下的服务器至少部分负责。您链接到的问题是您无法强制 k6 升级连接,但它不会总是强制它们。
    • 不客气,亚历山大! @na--也许我对使用“强制”这个词有点苛刻!因此,它是自愿的,但可能从一侧,即网络服务器端强制。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-24
    相关资源
    最近更新 更多