0
我有一些麻煩從客戶機發布數據到我們的內部網站使用PHP。服務器通過基本身份驗證通過HTTPS接受數據。下面是我使用了POST代碼:PHP POST與自定義標題給HTTP 400錯誤請求響應(錯誤?)
$parameters = array('http' => array(
'method' => 'POST',
'content' => $data
)
);
if ($optionalHeaders !== NULL) {
$parameters['http']['header'] = $optionalHeaders;
}
$ctx = stream_context_create($parameters);
$fp = fopen($url, 'rb', false, $ctx);
用下面的標題:
$postHeader = "POST /index.php HTTP/1.1\r\n".
"Host:my.host\r\n".
"Content-Type: application/x-www-form-urlencoded\r\n".
"User-Agent: PHP-Code\r\n".
"Content-Length: " . strlen($postData) . "\r\n".
"Authorization: Basic ".base64_encode($user.':'.$password)."\r\n".
"Connection: close\r\n";
現在,我能得到這個工作,而且它的帖子就好了我的一個客戶用PHP 5.2.5版,但其他客戶端上我得到這個錯誤信息:
fopen(magical_url): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request
與Apache的錯誤日誌中給出了:
request failed: error reading the headers
我可以看到的唯一區別是後一個客戶端有PHP版本5.1.6。 有誰知道這是否是一個錯誤?或者我在某處做錯了什麼... 我瀏覽過PHP網站,發現PHP 5.236版本中列出的此錯誤爲https://bugs.php.net/bug.php?id=45540,但是這個日期是它的工作版本!
感謝, 的Jak
非常好,謝謝。我刪除了這些部分,它的工作原理。奇怪的是,它在所有標題的其他客戶端機器上工作。 – Jak