gpt4 book ai didi

PHP + curl : Connection closure while negotiation auth (HTTP 1. 0?)

转载 作者:行者123 更新时间:2023-12-04 19:25:36 25 4
gpt4 key购买 nike

我在 CURL 和 PHP 之间有问题。我尝试通过 EWS 连接到 Exchange 2010 服务器。与服务器的连接在命令行中使用 CURL 工作正常,但不能使用 PHP Curl 扩展。

我附上了一张带有调试信息的图像。在左侧,您会看到命令行输出,在右侧是 PHP 详细输出。当 PHP Curl 扩展抛出错误“协商身份验证时连接关闭(HTTP 1.0?)”,命令行继续执行第三个 HTTP 请求,结果是 HTTP/1.1 302 Found:

log information

一些附加信息:

  • 我将此库用于 CURL 请求:https://github.com/jamesiarmes/php-ntlm/blob/master/src/SoapClient.php
  • 我们有大约 80 台交换服务器,没有问题。只有这台服务器有问题。我们的客户讲述了一个名为“Sophos”的软件用作网络服务器的代理
  • CURLOPT_HTTPAUTH 是 CURLAUTH_NTLM
  • PHP 7.3.1/7.3.9 也测试了
  • cURL 信息 7.63.0/7.52.1 也经过测试

  • 有人知道为什么 PHP Curl 扩展在第三个请求之前关闭连接吗?这是扩展程序的错误,我可以使用 PHP Curl 常量来避免这种情况还是有其他解决方案?

    最佳答案

    连接被关闭,因为服务器这么说。看你的截图,上面一行是“这里有什么问题?”点。

    HTTP/1.1 401 Unauthorized
    [...]
    Connection: close
    Content-Type: application/x-asmx


    并且服务器可能会在之后关闭连接。

    所以这不是行动,而是结果。该消息在 Curl_http_readwrite_headers 中发出:
    #if defined(USE_NTLM)
    if(conn->bits.close &&
    (((data->req.httpcode == 401) &&
    (conn->http_ntlm_state == NTLMSTATE_TYPE2)) ||
    ((data->req.httpcode == 407) &&
    (conn->proxy_ntlm_state == NTLMSTATE_TYPE2)))) {
    infof(data, "Connection closure while negotiating auth (HTTP 1.0?)\n");
    data->state.authproblem = TRUE;
    }
    #endif
    #if defined(USE_SPNEGO)
    if(conn->bits.close &&
    (((data->req.httpcode == 401) &&
    (conn->http_negotiate_state == GSS_AUTHRECV)) ||
    ((data->req.httpcode == 407) &&
    (conn->proxy_negotiate_state == GSS_AUTHRECV)))) {
    infof(data, "Connection closure while negotiating auth (HTTP 1.0?)\n");
    data->state.authproblem = TRUE;
    }

    大概是从第一个块 (NTLM) 开始的,但这是两次出现,无论如何它们彼此相邻。

    有趣的事实:只有相同的功能 a lot later检查是否存在 Connection: close标题,所以有神秘的标志 conn->bits.close set 可能意味着服务器已经断开连接,并且在套接字级别检测到它。

    旁注:比较的两侧显示出非常不同的相互作用。在左边有一个几乎是空的 GET请求(提供 HostAuthorizationUser-AgentAccept header ),而在右侧有更复杂的 POST请求(相同的 header 加上 MethodSOAPAction ,一个空内容 Expect 用于继续)。

    关于PHP + curl : Connection closure while negotiation auth (HTTP 1. 0?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58285435/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com