我正在開發一個使用cURL將數據發佈到遠程服務器的wordpress插件。 這可以在最大的網站上正常工作,但在一些網站上,它只是出現了一個錯誤訪問被拒絕。使用代理/防火牆從服務器使用cURL發送到遠程服務器
[headers] => Array
(
[server] => squid/3.3.8
[mime-version] => 1.0
[date] => Tue, 31 Mar 2015 07:32:51 GMT
[content-type] => text/html
[content-length] => 3406
[x-squid-error] => ERR_ACCESS_DENIED 0
[vary] => Accept-Language
[content-language] => en
[x-cache] => MISS from hproxy2.world4you.com
[x-cache-lookup] => NONE from hproxy2.world4you.com:3128
[via] => 1.1 hproxy2.world4you.com (squid/3.3.8)
[connection] => close
)
以上是我正在創建的響應。
下面是我使用
function testpost($ac,$d_name,$an,$data) {
$fields = '';
foreach ($data as $key => $value) {
$fields .= $key . '=' . $value . '&';
}
rtrim($fields, '&');
$post = curl_init();
curl_setopt($post, CURLOPT_RETURNTRANSFER,true);
curl_setopt($post, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($post, CURLOPT_URL, $ac);
curl_setopt($post, CURLOPT_POST, count($data));
curl_setopt($post, CURLOPT_POSTFIELDS, $fields);
curl_setopt($post, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($post, CURLOPT_SSL_VERIFYHOST, 2);
$result = curl_exec($post);
echo "<pre>";
print_r($result);
echo "</pre>";
}
而且,有些服務器就可以繼續執行,不返回任何代碼。對於這些無法弄清楚什麼是問題,甚至無法向用戶顯示一些錯誤消息,因爲它不會返回任何內容。
例如 如果我在abc.com上安裝插件並嘗試使用cURL到xyz.com/test.php進行POST,請在test.php中編寫代碼以將數據寫入文本文件以檢查abc.com的cURL請求是或者不在xyz.com上。但它沒有寫入任何文本文件意味着請求沒有從abc.com到達xyz.com。在這個我沒有得到任何迴應,它在很長一段時間繼續在abc.com上執行。
所以,我需要找出阻止你的要求是怎麼產生這個問題,我該怎麼員額從abc.com數據xyz.com
我一定要改變我的插件來獲得服務器的代理服務器設置(在其上運行的插件)。例如curl_setopt($ ch,CURLOPT_PROXYPORT,$ proxyPort); curl_setopt($ ch,CURLOPT_PROXYTYPE,'HTTP'); curl_setopt($ ch,CURLOPT_PROXY,$ proxyIp); curl_setopt($ ch,CURLOPT_PROXYUSERPWD,$ loginpassw); – user2231113 2015-04-06 07:00:31