Проблема PHP cURL CURLAUTH_NEGOTIATE с запросами POST - PullRequest
0 голосов
/ 13 июня 2019

У меня действительно странная ошибка в PHP cURL при использовании CURLAUTH_NEGOTIATE аутентификации.При отправке GET-запросов все работает нормально.Но после установки типа запроса на POST сервер возвращает код ответа 401.

<?php

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://example.com/example/path");

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

$fields = array(
   'data1' => 'value1',
   'data2' => 'value2',
);

// ----- Removing this two lines below makes everything work fine -----
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
// --------------------------------------------------------------------

curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NEGOTIATE);
curl_setopt($ch, CURLOPT_USERPWD, 'domain\user:password');

$output = curl_exec($ch);
curl_close($ch);

// With POST request response contains standard IIS unauthorized error
// (with 401 response code). With GET request everything works fine 
// and response contains expected results returned from PHP script
var_dump(htmlentities($output));

Версия PHP на сервере - 7.3.6.cURL настроен следующим образом:

cURL support => enabled
cURL Information => 7.64.0
Age => 4

AsynchDNS => Yes
CharConv => No
Debug => No
GSS-Negotiate => No
IDN => Yes
IPv6 => Yes
krb4 => No
Largefile => Yes
libz => Yes
NTLM => Yes
NTLMWB => No
SPNEGO => Yes
SSL => Yes
SSPI => Yes
TLS-SRP => No
HTTP2 => Yes
GSSAPI => No
KERBEROS5 => Yes
UNIX_SOCKETS => No
PSL => No
HTTPS_PROXY => Yes
MULTI_SSL => No
BROTLI => No
Protocols => dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, ldaps, pop3, pop3s, rtsp, scp, sftp, smb, smbs, smtp, smtps, telnet, tftp
Host => x86_64-pc-win32
SSL Version => OpenSSL/1.1.1b
ZLib Version => 1.2.11
libSSH Version => libssh2/1.8.2

Сервер назначения доступен напрямую без прокси.

Кто-нибудь испытывал подобные проблемы?Это ошибка в PHP или, возможно, я делаю это неправильно?Заранее спасибо за любые ответы.

...