這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)在PHP中使用Curl時(shí)出現(xiàn)403錯(cuò)誤如何解決,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
站在用戶的角度思考問題,與客戶深入溝通,找到稱多網(wǎng)站設(shè)計(jì)與稱多網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站建設(shè)、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國(guó)際域名空間、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋稱多地區(qū)。代碼如下:
* Trying 127.0.0.1... * connected
* Connected to 127.0.0.1 (127.0.0.1) port 8118 (#0)
* Establish HTTP proxy tunnel to www.baidu.com:80
> CONNECT www.baidu.com:80 HTTP/1.0
Host: www.baidu.com:80
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Proxy-Connection: Keep-Alive
< HTTP/1.0 403 Connection not allowable
< X-Hint: If you read this message interactively, then you know why this happens ,-)
<
* The requested URL returned error: 403
* Received HTTP code 403 from proxy after CONNECT
* Closing connection #0
... Failed.
可以看到proxy服務(wù)器工作正常,的確是baidu返回了403錯(cuò)誤,但原因肯定還在我這邊。終于,從網(wǎng)上(1of2, 2of2)得到了點(diǎn)啟發(fā)──我使用的是proxytunnel而非proxy。
在代碼中,有這么一句:
復(fù)制代碼 代碼如下:
curl_setopt($this->mSh, CURLOPT_HTTPPROXYTUNNEL, true);
curl_setopt($this->mSh, CURLOPT_PROXY, $phost);
php文檔中沒有詳細(xì)說明,不過man curl中有詳細(xì)解釋,兩者都是代理,proxytunnel(-p參數(shù))允許其他協(xié)議通過http代理傳輸,而proxy(-x參數(shù))則只能走h(yuǎn)ttp協(xié)議。所以我猜測(cè),google baidu的服務(wù)器和curl的proxytunnel不和,所以返回403。
禁用掉上面2行代碼的第一句后,curl訪問恢復(fù)正常。
比較奇怪的是,幾種操作系統(tǒng)下還不一樣,一臺(tái)MAC OSX就要顯式的禁用proxytunnel才可以,curl版本:
復(fù)制代碼 代碼如下:
$ curl --version
curl 7.16.3 (powerpc-apple-darwin9.0) libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
Protocols: tftp ftp telnet dict ldap http file https ftps
Features: GSS-Negotiate IPv6 Largefile NTLM SSL libz
而另外一臺(tái)ubuntu則完全不受影響,怎么都能用,curl版本:
復(fù)制代碼 代碼如下:
$ curl --version
curl 7.18.2 (i486-pc-linux-gnu) libcurl/7.18.2 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.10
Protocols: tftp ftp telnet dict ldap ldaps http file https ftps
Features: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz
MT主機(jī)上的centos也沒事,curl版本:
復(fù)制代碼 代碼如下:
$ curl --version
curl 7.15.5 (i686-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5
Protocols: tftp ftp telnet dict ldap http file https ftps
Features: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz
看來不完全是curl版本問題,MAC OSX的確與眾不同啊。
還有一個(gè)原因也會(huì)導(dǎo)致curl返回403錯(cuò)誤,如果設(shè)置了:
復(fù)制代碼 代碼如下:
curl_setopt($ch, CURLOPT_NOBODY, true);
則需要緊跟著設(shè)置:
復(fù)制代碼 代碼如下:
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
不然會(huì)因?yàn)閔ttp服務(wù)器不允許 HEAD 命令而返回403錯(cuò)誤。參考:Trouble with a cURL request in PHP(/tupian/20230522/devshed.com OSX上curl之所以特殊,也不排除是這種原因吧。
上述就是小編為大家分享的在PHP中使用Curl時(shí)出現(xiàn)403錯(cuò)誤如何解決了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)頁(yè)標(biāo)題:在PHP中使用Curl時(shí)出現(xiàn)403錯(cuò)誤如何解決-創(chuàng)新互聯(lián)
當(dāng)前鏈接:http://aaarwkj.com/article16/dpgpdg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、品牌網(wǎng)站制作、小程序開發(fā)、自適應(yīng)網(wǎng)站、網(wǎng)站策劃、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容