2
我有一個PHP curl請求可行 - 但是,如果我將CURLOPT_FOLLOWLOCATION
設置爲1
,Curl帖子會與postdata一起提交,重定向頁面HTML將被捕獲併發布在本地服務器上。使用數據重定向curl請求
整個重定向包含在我的本地服務器中,它實際上並沒有將數據轉移到重定向本身(這是我想要的)。在我的post.php上下載了幾秒鐘的html之後,它重定向到一個未找到的頁面。
但是,如果我將CURLOPT_FOLLOWLOCATION
設置爲0
,然後獲取正確的URL,然後通過header("Location: $redirect");
重定向它 - 它傳輸正常,但沒有更多的數據正在傳輸。
將數據傳輸到新標題位置的最佳方法是什麼?
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLINFO_HEADER_OUT, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'postdata=' . urlencode(xmlGrab()));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
// Download the given URL, and return output
$output = curl_exec($ch);
$headers = substr($output, 0, $curl_info["header_size"]); //split out header
$redirect = curl_getinfo($ch)['redirect_url'];
header('HTTP/1.1 307 Temporary Redirect');
header("Location: $redirect");
// Close the cURL resource, and free system resources
curl_close($ch);
示例方案:
- 用戶提交一則訊息http://localhost:8888/post.php
- post.php中包含對使用google.co.uk
- post.php中連接的連接,使一個交至google.co.uk
- 請求下載google.co.uk?q=blahblah到post.php
- post.php中看起來很像google.co.uk?q=blahblah
- 3秒後,它重定向到http; //本地主機:8888/Q = blahblah
「然後將它添加回我的本地服務器」 - 嗯?不知道你的意思。請重新說明。 –
@ KarolyHorvath加了一點點解釋 –
對不起,不明白那個。 –