0 レビュー
0 回答
cURLCMDとPHPは--negotiateを使用して異なる結果を取得します
壁にぶつかり、スタック(または他の場所)で適切な答えが見つからないようです。 PHP経由でcURLリクエストを取得して適切に承認するのに問題があります。
コマンドラインからcURL7.57.0を使用した次のリクエストは機能します:
curl --negotiate -u MYDOMAIN\myuser:mypass http://myip:myport/mywebservice.svc
cURLv7.39.0でPHP5.6.4(Windowsで実行)を使用して以下のコードを試すと、401.2エラーが発生します:
<?php
//Set vars
$url = "http://myip:myport/mywebservice.svc"; // asmx URL of WSDL
$un = "myuser"; // username
$password = "mypass"; // password
$domain = "MYDOMAIN\\"; // domain
//Set Header Array
$headers = array(
'Method: GET',
'Content-Type: text/xml;charset=UTF-8',
'User-Agent: PHP-SOAP-CURL',
"SOAPAction: urn:MyService");
//Create, Send and Output cURL Request
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NEGOTIATE);
curl_setopt($ch, CURLOPT_USERPWD, $domain . $un.":".$password);
$response = curl_exec($ch);
echo $response;
?>
PHP CURL設定は次のとおりです:
cURL support => enabled
cURL Information => 7.39.0
Age => 3
**Features**
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
Protocols => dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, pop3, pop3s, rtsp, scp, sftp, smtp, smtps, telnet, tftp
Host => i386-pc-win32
SSL Version OpenSSL/1.0.1i
ZLib Version => 1.2.7.3
libSSH Version => libssh2/1.4.3
その価値については、「ネゴシエート」プロバイダーでWindows認証を使用してWindowsIISでホストされているWebサービスに接続しようとしています
誰かが私が間違っていることについて何か考えを持っていますか? PHPv7.39のCURL7.57とcurlibの違いは何ですか?
他に何か考えはありますか?
よろしくお願いします! ダン
******************編集********************
この時点で、私の推測では、PHP curlibのCURLAUTH_NEGOTIATEは、CMD行を介して個別にダウンロードして実行したcURLライブラリの--negotiateと同じことを行っていません。そうは言っても、私は新しい、より正確で明確に述べられた質問を始めると思います。コメントしてくれたすべての人に感謝します。
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。