1. 程式人生 > >php CURL 傳送請求詳解

php CURL 傳送請求詳解

cURL可以使用URL的語法模擬瀏覽器來傳輸資料,因為它是模擬瀏覽器,因此它同樣支援多種協議,FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP等協議都可以很好的支援,包括一些:HTTPS認證,HTTP POST方法,HTTP PUT方法,FTP上傳,keyberos認證,HTTP上傳,代理伺服器,cookies,使用者名稱/密碼認證,下載檔案斷點續傳,上傳檔案斷點續傳,http代理伺服器管道,甚至它還支援IPv6,scoket5代理伺服器,通過http代理伺服器上傳檔案到FTP伺服器等等。

使用PHP的cURL庫可以簡單和有效地去抓網頁。你只需要執行一個指令碼,然後分析一下你所抓取的網頁,然後就可以以程式的方式得到你想要的資料了。無論是你想從從一個連結上取部分資料,或是取一個XML檔案並把其匯入資料庫,那怕就是簡單的獲取網頁內容,cURL 是一個功能強大的PHP庫。

1、PHP建立CURL請求的基本步驟

①:初始化

curl_init()

②:設定屬性

curl_setopt().有一長串cURL引數可供設定,它們能指定URL請求的各個細節。

③:執行並獲取結果

curl_exec()

④:釋放控制代碼

curl_close()

2、例項:

php curl 傳送get請求:

//初始化
$curl = curl_init();
//設定抓取的url
curl_setopt($curl, CURLOPT_URL, 'http://www.baidu.com');
//設定標頭檔案的資訊作為資料流輸出
curl_setopt($curl, CURLOPT_HEADER, 1);
//設定獲取的資訊以檔案流的形式返回,而不是直接輸出。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//執行命令
$data = curl_exec($curl);
echo curl_getinfo($curl,CURLINFO_HTTP_CODE); //輸出請求狀態碼
//關閉URL請求
curl_close($curl);
//顯示獲得的資料
print_r($data);

php curl 傳送post請求:

//初始化
$curl = curl_init();
//設定抓取的url
curl_setopt($curl, CURLOPT_URL, 'http://localhost/test/test.php');
//設定標頭檔案的資訊作為資料流輸出
curl_setopt($curl, CURLOPT_HEADER, 1);
//設定獲取的資訊以檔案流的形式返回,而不是直接輸出。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//設定post方式提交
curl_setopt($curl, CURLOPT_POST, 1);
//設定post資料
$post_data = array(
    "title" => "1290800466",
    "content" => "3424243243"
);
//post提交的資料
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
//執行命令
$data = curl_exec($curl);
//關閉URL請求
curl_close($curl);
//顯示獲得的資料
print_r($data); 



test.php:
<?php
$title = $_REQUEST['title'];
$content = $_REQUEST['content'];
error_log($title."\n",3,'error.log');
error_log($content."\n",3,'error.log');
echo 'ok';

3、PHP cURL 函式:

以下包含了PHP cURL函式列表:

4、curl_setopt函式引數介紹:

bool curl_setopt( resource $ch,int $option, mixed $value)

引數說明:
ch            由 curl_init() 返回的 cURL 控制代碼。
option     需要設定的CURLOPT_XXX選項。
value       將設定在option選項上的值。

對於下面的這些option的可選引數,value應該被設定一個bool型別的值:

選項 可選value 備註
CURLOPT_AUTOREFERER 當根據Location:重定向時,自動設定header中的Referer:資訊。
CURLOPT_BINARYTRANSFER 在啟用CURLOPT_RETURNTRANSFER的時候,返回原生的(Raw)輸出。
CURLOPT_COOKIESESSION 啟用時curl會僅僅傳遞一個session cookie,忽略其他的cookie,預設狀況下cURL會將所有的cookie返回給服務端。session cookie是指那些用來判斷伺服器端的session是否有效而存在的cookie。
CURLOPT_CRLF 啟用時將Unix的換行符轉換成回車換行符。
CURLOPT_DNS_USE_GLOBAL_CACHE 啟用時會啟用一個全域性的DNS快取,此項為執行緒安全的,並且預設啟用。
CURLOPT_FAILONERROR 顯示HTTP狀態碼,預設行為是忽略編號小於等於400的HTTP資訊。
CURLOPT_FILETIME 啟用時會嘗試修改遠端文件中的資訊。結果資訊會通過curl_getinfo()函式的CURLINFO_FILETIME選項返回。 curl_getinfo().
CURLOPT_FOLLOWLOCATION 啟用時會將伺服器伺服器返回的"Location: "放在header中遞迴的返回給伺服器,使用CURLOPT_MAXREDIRS可以限定遞迴返回的數量。
CURLOPT_FORBID_REUSE 在完成互動以後強迫斷開連線,不能重用。
CURLOPT_FRESH_CONNECT 強制獲取一個新的連線,替代快取中的連線。
CURLOPT_FTP_USE_EPRT 啟用時當FTP下載時,使用EPRT (或 LPRT)命令。設定為FALSE時禁用EPRT和LPRT,使用PORT命令 only.
CURLOPT_FTP_USE_EPSV 啟用時,在FTP傳輸過程中回覆到PASV模式前首先嚐試EPSV命令。設定為FALSE時禁用EPSV命令。
CURLOPT_FTPAPPEND 啟用時追加寫入檔案而不是覆蓋它。
CURLOPT_FTPASCII CURLOPT_TRANSFERTEXT的別名。
CURLOPT_FTPLISTONLY 啟用時只列出FTP目錄的名字。
CURLOPT_HEADER 啟用時會將標頭檔案的資訊作為資料流輸出。
CURLINFO_HEADER_OUT 啟用時追蹤控制代碼的請求字串。 從 PHP 5.1.3 開始可用。CURLINFO_字首是故意的(intentional)。
CURLOPT_HTTPGET 啟用時會設定HTTP的method為GET,因為GET是預設是,所以只在被修改的情況下使用。
CURLOPT_HTTPPROXYTUNNEL 啟用時會通過HTTP代理來傳輸。
CURLOPT_MUTE 啟用時將cURL函式中所有修改過的引數恢復預設值。
CURLOPT_NETRC 在連線建立以後,訪問~/.netrc檔案獲取使用者名稱和密碼資訊連線遠端站點。
CURLOPT_NOBODY 啟用時將不對HTML中的BODY部分進行輸出。
CURLOPT_NOPROGRESS

啟用時關閉curl傳輸的進度條,此項的預設設定為啟用。

Note:

PHP自動地設定這個選項為TRUE,這個選項僅僅應當在以除錯為目的時被改變。

CURLOPT_NOSIGNAL 啟用時忽略所有的curl傳遞給php進行的訊號。在SAPI多執行緒傳輸時此項被預設啟用。 cURL 7.10時被加入。
CURLOPT_POST 啟用時會發送一個常規的POST請求,型別為:application/x-www-form-urlencoded,就像表單提交的一樣。
CURLOPT_PUT 啟用時允許HTTP傳送檔案,必須同時設定CURLOPT_INFILECURLOPT_INFILESIZE
CURLOPT_RETURNTRANSFER 將curl_exec()獲取的資訊以檔案流的形式返回,而不是直接輸出。
CURLOPT_SSL_VERIFYPEER 禁用後cURL將終止從服務端進行驗證。使用CURLOPT_CAINFO選項設定證書使用CURLOPT_CAPATH選項設定證書目錄 如果CURLOPT_SSL_VERIFYPEER(預設值為2)被啟用,CURLOPT_SSL_VERIFYHOST需要被設定成TRUE否則設定為FALSE 自cURL 7.10開始預設為TRUE。從cURL 7.10開始預設繫結安裝。
CURLOPT_TRANSFERTEXT 啟用後對FTP傳輸使用ASCII模式。對於LDAP,它檢索純文字資訊而非HTML。在Windows系統上,系統不會把STDOUT設定成binary模式。
CURLOPT_UNRESTRICTED_AUTH 在使用CURLOPT_FOLLOWLOCATION產生的header中的多個locations中持續追加使用者名稱和密碼資訊,即使域名已發生改變。
CURLOPT_UPLOAD 啟用後允許檔案上傳。
CURLOPT_VERBOSE 啟用時會彙報所有的資訊,存放在STDERR或指定的CURLOPT_STDERR中。

對於下面的這些option的可選引數,value應該被設定一個integer型別的值:

選項 可選value 備註
CURLOPT_BUFFERSIZE 每次獲取的資料中讀入快取的大小,但是不保證這個值每次都會被填滿。 在cURL 7.10中被加入。
CURLOPT_CLOSEPOLICY 不是CURLCLOSEPOLICY_LEAST_RECENTLY_USED就是CURLCLOSEPOLICY_OLDEST,還存在另外三個CURLCLOSEPOLICY,但是cURL暫時還不支援。
CURLOPT_CONNECTTIMEOUT 在發起連線前等待的時間,如果設定為0,則無限等待。
CURLOPT_CONNECTTIMEOUT_MS 嘗試連線等待的時間,以毫秒為單位。如果設定為0,則無限等待。 在cURL 7.16.2中被加入。從PHP 5.2.3開始可用。
CURLOPT_DNS_CACHE_TIMEOUT 設定在記憶體中儲存DNS資訊的時間,預設為120秒。
CURLOPT_FTPSSLAUTH FTP驗證方式:CURLFTPAUTH_SSL (首先嚐試SSL),CURLFTPAUTH_TLS (首先嚐試TLS)或CURLFTPAUTH_DEFAULT (讓cURL自動決定)。 在cURL 7.12.2中被加入。
CURLOPT_HTTP_VERSION CURL_HTTP_VERSION_NONE (預設值,讓cURL自己判斷使用哪個版本),CURL_HTTP_VERSION_1_0 (強制使用 HTTP/1.0)或CURL_HTTP_VERSION_1_1 (強制使用 HTTP/1.1)。
CURLOPT_INFILESIZE 設定上傳檔案的大小限制,位元組(byte)為單位。
CURLOPT_LOW_SPEED_LIMIT 當傳輸速度小於CURLOPT_LOW_SPEED_LIMIT時(bytes/sec),PHP會根據CURLOPT_LOW_SPEED_TIME來判斷是否因太慢而取消傳輸。
CURLOPT_LOW_SPEED_TIME 當傳輸速度小於CURLOPT_LOW_SPEED_LIMIT時(bytes/sec),PHP會根據CURLOPT_LOW_SPEED_TIME來判斷是否因太慢而取消傳輸。
CURLOPT_MAXCONNECTS 允許的最大連線數量,超過是會通過CURLOPT_CLOSEPOLICY決定應該停止哪些連線。
CURLOPT_MAXREDIRS 指定最多的HTTP重定向的數量,這個選項是和CURLOPT_FOLLOWLOCATION一起使用的。
CURLOPT_PORT 用來指定連線埠。(可選項)
CURLOPT_PROTOCOLS CURLPROTO_*的位域指。如果被啟用,位域值會限定libcurl在傳輸過程中有哪些可使用的協議。這將允許你在編譯libcurl時支援眾多協議,但是限制只是用它們中被允許使用的一個子集。預設libcurl將會使用全部它支援的協議。參見CURLOPT_REDIR_PROTOCOLS.可用的協議選項為:CURLPROTO_HTTP、CURLPROTO_HTTPS、CURLPROTO_FTP、CURLPROTO_FTPS、CURLPROTO_SCP、CURLPROTO_SFTP、CURLPROTO_TELNET、CURLPROTO_LDAP、CURLPROTO_LDAPS、CURLPROTO_DICT、CURLPROTO_FILE、CURLPROTO_TFTP、CURLPROTO_ALL 在cURL 7.19.4中被加入。
CURLOPT_PROTOCOLS CURLPROTO_*的位域指。如果被啟用,位域值會限定libcurl在傳輸過程中有哪些可使用的協議。這將允許你在編譯libcurl時支援眾多協議,但是限制只是用它們中被允許使用的一個子集。預設libcurl將會使用全部它支援的協議。參見CURLOPT_REDIR_PROTOCOLS.可用的協議選項為:CURLPROTO_HTTP、CURLPROTO_HTTPS、CURLPROTO_FTP、CURLPROTO_FTPS、CURLPROTO_SCP、CURLPROTO_SFTP、CURLPROTO_TELNET、CURLPROTO_LDAP、CURLPROTO_LDAPS、CURLPROTO_DICT、CURLPROTO_FILE、CURLPROTO_TFTP、CURLPROTO_ALL 在cURL 7.19.4中被加入。
CURLOPT_PROXYAUTH HTTP代理連線的驗證方式。使用在CURLOPT_HTTPAUTH中的位域標誌來設定相應選項。對於代理驗證只有CURLAUTH_BASICCURLAUTH_NTLM當前被支援。 在cURL 7.10.7中被加入。
CURLOPT_PROXYPORT 代理伺服器的埠。埠也可以在CURLOPT_PROXY中進行設定。
CURLOPT_PROXYTYPE 不是CURLPROXY_HTTP (預設值) 就是CURLPROXY_SOCKS5 在cURL 7.10中被加入。
CURLOPT_REDIR_PROTOCOLS CURLPROTO_*中的位域值。如果被啟用,位域值將會限制傳輸執行緒在CURLOPT_FOLLOWLOCATION開啟時跟隨某個重定向時可使用的協議。這將使你對重定向時限制傳輸執行緒使用被允許的協議子集預設libcurl將會允許除FILE和SCP之外的全部協議。這個和7.19.4預釋出版本種無條件地跟隨所有支援的協議有一些不同。關於協議常量,請參照CURLOPT_PROTOCOLS 在cURL 7.19.4中被加入。
CURLOPT_RESUME_FROM 在恢復傳輸時傳遞一個位元組偏移量(用來斷點續傳)。
CURLOPT_SSL_VERIFYHOST 1 檢查伺服器SSL證書中是否存在一個公用名(common name)。譯者注:公用名(Common Name)一般來講就是填寫你將要申請SSL證書的域名 (domain)或子域名(sub domain)。2 檢查公用名是否存在,並且是否與提供的主機名匹配。
CURLOPT_SSLVERSION 使用的SSL版本(2 或 3)。預設情況下PHP會自己檢測這個值,儘管有些情況下需要手動地進行設定。
CURLOPT_TIMECONDITION 如果在CURLOPT_TIMEVALUE指定的某個時間以後被編輯過,則使用CURL_TIMECOND_IFMODSINCE返回頁面,如果沒有被修改過,並且CURLOPT_HEADER為true,則返回一個"304 Not Modified"的header,CURLOPT_HEADER為false,則使用CURL_TIMECOND_IFUNMODSINCE,預設值為CURL_TIMECOND_IFUNMODSINCE
CURLOPT_TIMEOUT 設定cURL允許執行的最長秒數。
CURLOPT_TIMEOUT_MS 設定cURL允許執行的最長毫秒數。 在cURL 7.16.2中被加入。從PHP 5.2.3起可使用。
CURLOPT_TIMEVALUE 設定一個CURLOPT_TIMECONDITION使用的時間戳,在預設狀態下使用的是CURL_TIMECOND_IFMODSINCE

對於下面的這些option的可選引數,value應該被設定一個string型別的值:

選項 可選value 備註
CURLOPT_CAINFO 一個儲存著1個或多個用來讓服務端驗證的證書的檔名。這個引數僅僅在和CURLOPT_SSL_VERIFYPEER一起使用時才有意義。 .
CURLOPT_CAPATH 一個儲存著多個CA證書的目錄。這個選項是和CURLOPT_SSL_VERIFYPEER一起使用的。
CURLOPT_COOKIE 設定HTTP請求中"Cookie: "部分的內容。多個cookie用分號分隔,分號後帶一個空格(例如, "fruit=apple; colour=red")。
CURLOPT_COOKIEFILE 包含cookie資料的檔名,cookie檔案的格式可以是Netscape格式,或者只是純HTTP頭部資訊存入檔案。
CURLOPT_COOKIEJAR 連線結束後儲存cookie資訊的檔案。
CURLOPT_CUSTOMREQUEST

使用一個自定義的請求資訊來代替"GET""HEAD"作為HTTP請求。這對於執行"DELETE"或者其他更隱蔽的HTTP請求。有效值如"GET""POST""CONNECT"等等。也就是說,不要在這裡輸入整個HTTP請求。例如輸入"GET /index.html HTTP/1.0\r\n\r\n"是不正確的。

Note:

在確定伺服器支援這個自定義請求的方法前不要使用。

CURLOPT_EGDSOCKET 類似CURLOPT_RANDOM_FILE,除了一個Entropy Gathering Daemon套接字。
CURLOPT_ENCODING HTTP請求頭中"Accept-Encoding: "的值。支援的編碼有"identity""deflate""gzip"。如果為空字串"",請求頭會發送所有支援的編碼型別。 在cURL 7.10中被加入。
CURLOPT_FTPPORT 這個值將被用來獲取供FTP"POST"指令所需要的IP地址。"POST"指令告訴遠端伺服器連線到我們指定的IP地址。這個字串可以是純文字的IP地址、主機名、一個網路介面名(UNIX下)或者只是一個'-'來使用預設的IP地址。
CURLOPT_INTERFACE 網路傳送介面名,可以是一個介面名、IP地址或者是一個主機名。
CURLOPT_KRB4LEVEL KRB4 (Kerberos 4) 安全級別。下面的任何值都是有效的(從低到高的順序):"clear""safe""confidential""private".。如果字串和這些都不匹配,將使用"private"。這個選項設定為NULL時將禁用KRB4 安全認證。目前KRB4 安全認證只能用於FTP傳輸。
CURLOPT_POSTFIELDS 全部資料使用HTTP協議中的"POST"操作來發送。要傳送檔案,在檔名前面加上@字首並使用完整路徑。這個引數可以通過urlencoded後的字串類似'para1=val1&para2=val2&...'或使用一個以欄位名為鍵值,欄位資料為值的陣列。如果value是一個數組,Content-Type頭將會被設定成multipart/form-data
CURLOPT_PROXY HTTP代理通道。
CURLOPT_PROXYUSERPWD 一個用來連線到代理的"[username]:[password]"格式的字串。
CURLOPT_RANDOM_FILE 一個被用來生成SSL隨機數種子的檔名。
CURLOPT_RANGE "X-Y"的形式,其中X和Y都是可選項獲取資料的範圍,以位元組計。HTTP傳輸執行緒也支援幾個這樣的重複項中間用逗號分隔如"X-Y,N-M"
CURLOPT_REFERER 在HTTP請求頭中"Referer: "的內容。
CURLOPT_SSL_CIPHER_LIST 一個SSL的加密演算法列表。例如RC4-SHATLSv1都是可用的加密列表。
CURLOPT_SSLCERT 一個包含PEM格式證書的檔名。
CURLOPT_SSLCERTPASSWD 使用CURLOPT_SSLCERT證書需要的密碼。
CURLOPT_SSLCERTTYPE 證書的型別。支援的格式有"PEM" (預設值), "DER""ENG" 在cURL 7.9.3中被加入。
CURLOPT_SSLENGINE 用來在CURLOPT_SSLKEY中指定的SSL私鑰的加密引擎變數。
CURLOPT_SSLENGINE_DEFAULT 用來做非對稱加密操作的變數。
CURLOPT_SSLKEY 包含SSL私鑰的檔名。
CURLOPT_SSLKEYPASSWD

CURLOPT_SSLKEY中指定了的SSL私鑰的密碼。

Note:

由於這個選項包含了敏感的密碼資訊,記得保證這個PHP指令碼的安全。

CURLOPT_SSLKEYTYPE CURLOPT_SSLKEY中規定的私鑰的加密型別,支援的金鑰型別為"PEM"(預設值)、"DER""ENG"
CURLOPT_URL 需要獲取的URL地址,也可以在curl_init()函式中設定。
CURLOPT_USERAGENT 在HTTP請求中包含一個"User-Agent: "頭的字串。
CURLOPT_USERPWD 傳遞一個連線中需要的使用者名稱和密碼,格式為:"[username]:[password]"

對於下面的這些option的可選引數,value應該被設定一個數組:

選項 可選value 備註
CURLOPT_HTTP200ALIASES 200響應碼陣列,陣列中的響應嗎被認為是正確的響應,否則被認為是錯誤的。 在cURL 7.10.3中被加入。
CURLOPT_HTTPHEADER 一個用來設定HTTP頭欄位的陣列。使用如下的形式的陣列進行設定: array('Content-type: text/plain', 'Content-length: 100')
CURLOPT_POSTQUOTE 在FTP請求執行完成後,在伺服器上執行的一組FTP命令。
CURLOPT_QUOTE 一組先於FTP請求的在伺服器上執行的FTP命令。

對於下面的這些option的可選引數,value應該被設定一個流資源 (例如使用fopen()):

選項 可選value
CURLOPT_FILE 設定輸出檔案的位置,值是一個資源型別,預設為STDOUT (瀏覽器)。
CURLOPT_INFILE 在上傳檔案的時候需要讀取的檔案地址,值是一個資源型別。
CURLOPT_STDERR 設定一個錯誤輸出地址,值是一個資源型別,取代預設的STDERR
CURLOPT_WRITEHEADER 設定header部分內容的寫入的檔案地址,值是一個資源型別。

對於下面的這些option的可選引數,value應該被設定為一個回撥函式名:

選項 可選value
CURLOPT_HEADERFUNCTION 設定一個回撥函式,這個函式有兩個引數,第一個是cURL的資源控制代碼,第二個是輸出的header資料。header資料的輸出必須依賴這個函式,返回已寫入的資料大小。
CURLOPT_PASSWDFUNCTION 設定一個回撥函式,有三個引數,第一個是cURL的資源控制代碼,第二個是一個密碼提示符,第三個引數是密碼長度允許的最大值。返回密碼的值。
CURLOPT_PROGRESSFUNCTION 設定一個回撥函式,有三個引數,第一個是cURL的資源控制代碼,第二個是一個檔案描述符資源,第三個是長度。返回包含的資料。
CURLOPT_READFUNCTION 回撥函式名。該函式應接受三個引數。第一個是 cURL resource;第二個是通過選項CURLOPT_INFILE 傳給 cURL 的 stream resource;第三個引數是最大可以讀取的資料的數量。回 調函式必須返回一個字串,長度小於或等於請求的資料量(第三個引數)。一般從傳入的 stream resource 讀取。返回空字串作為 EOF(檔案結束) 訊號。
CURLOPT_WRITEFUNCTION 回撥函式名。該函式應接受兩個引數。第一個是 cURL resource;第二個是要寫入的資料字串。數 據必須在函式中被儲存。函式必須返回準確的傳入的要寫入資料的位元組數,否則傳輸會被一個錯誤所中 斷。

返回值

成功時返回 TRUE, 或者在失敗時返回 FALSE。

一些狀態程式碼

1xx:請求收到,繼續處理  
2xx:操作成功收到,分析、接受  
3xx:完成此請求必須進一步處理  
4xx:請求包含一個錯誤語法或不能完成  
5xx:伺服器執行一個完全有效請求失敗 

100——客戶必須繼續發出請求  
101——客戶要求伺服器根據請求轉換HTTP協議版本 

200——交易成功  
201——提示知道新檔案的URL  
202——接受和處理、但處理未完成  
203——返回資訊不確定或不完整  
204——請求收到,但返回資訊為空  
205——伺服器完成了請求,使用者代理必須復位當前已經瀏覽過的檔案  
206——伺服器已經完成了部分使用者的GET請求 

300——請求的資源可在多處得到  
301——刪除請求資料  
302——在其他地址發現了請求資料  
303——建議客戶訪問其他URL或訪問方式  
304——客戶端已經執行了GET,但檔案未變化  
305——請求的資源必須從伺服器指定的地址得到  
306——前一版本HTTP中使用的程式碼,現行版本中不再使用  
307——申明請求的資源臨時性刪除 

400——錯誤請求,如語法錯誤  
401——請求授權失敗  
402——保留有效ChargeTo頭響應  
403——請求不允許  
404——沒有發現檔案、查詢或URl  
405——使用者在Request-Line欄位定義的方法不允許  
406——根據使用者傳送的Accept拖,請求資源不可訪問  
407——類似401,使用者必須首先在代理伺服器上得到授權  
408——客戶端沒有在使用者指定的餓時間內完成請求  
409——對當前資源狀態,請求不能完成  
410——伺服器上不再有此資源且無進一步的參考地址  
411——伺服器拒絕使用者定義的Content-Length屬性請求  
412——一個或多個請求頭欄位在當前請求中錯誤  
413——請求的資源大於伺服器允許的大小  
414——請求的資源URL長於伺服器允許的長度  
415——請求資源不支援請求專案格式  
416——請求中包含Range請求頭欄位,在當前請求資源範圍內沒有range指示值,請求  
也不包含If-Range請求頭欄位  
417——伺服器不滿足請求Expect頭欄位指定的期望值,如果是代理伺服器,可能是下一級伺服器不能滿足請求 

500——伺服器產生內部錯誤  
501——伺服器不支援請求的函式  
502——伺服器暫時不可用,有時是為了防止發生系統過載  
503——伺服器過載或暫停維修  
504——關口過載,伺服器使用另一個關口或服務來響應使用者,等待時間設定值較長  
505——伺服器不支援或拒絕支請求頭中指定的HTTP版本 



相關推薦

php CURL 傳送請求

cURL可以使用URL的語法模擬瀏覽器來傳輸資料,因為它是模擬瀏覽器,因此它同樣支援多種協議,FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP等協議都可以很好的支援,包括一些:HTTPS認證,HTTP PO

PHP curl函式使用

拿來先試試手 比如我們以著名的“測試網路是否連線”的網站——百度為例,來嘗試下curl <?php // create curl resource $ch = curl_init(); // set url curl_setopt($ch, CURLOPT_URL, "b

Android使用HttpUrlConnection請求伺服器傳送資料

HttpUrlConnection是java內建的api,在java.net包下,那麼,它請求網路同樣也有get請求和post請求兩種方式。最常用的Http請求無非是get和post,get請求可以獲取靜態頁面,也可以把引數放在URL字串後面,傳遞給servlet,post

php curl 傳送GET,POST請求的函式

protected function http_request($url, $data = null) { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url);

PHP配置文件php.ini

php配置文件詳解php.iniPHP配置文件詳解php.ini [PHP] ; PHP還是一個不斷發展的工具,其功能還在不斷地刪減 ; 而php.ini的設置更改可以反映出相當的變化, ; 在使用新的PHP版本前,研究一下php.ini會有好處的 ;;;;;;;;;;;;;;;;;;; ; 關於這個

PHP面向對象:繼承、封裝與多態

gets key copy nes col 成員變量 ret 封裝 文字 首先,在解釋面向對象之前先解釋下什麽是面向對象? [面向對象]1、什麽是類? 具有相同屬性(特征)和方法(行為)的一系列個體的集合,類是一個抽象的概念2、什麽是對象?從類中拿到的具有具體屬性值得個體,

PHP高效率寫法(原因)

存儲過程 連續 出了 view 大小 這才 increase 內置函數 pro 1.盡量靜態化: 如果一個方法能被靜態,那就聲明它為靜態的,速度可提高1/4,甚至我測試的時候,這個提高了近三倍。 當然了,這個測試方法需要在十萬級以上次執行,效果才明顯。 其實靜

跨越請求

ref 擁有 href 屬於 通過 內部 什麽 json數據 內容 .addd td>div { margin-left: 0 !important } 什麽是跨域? 協議 域名 端口號有一個不一樣就是跨域 跨域:跨域訪問,簡單來說就是 A 網站的 javas

【黑馬PHP教程】錯誤

error_log 報告 color 顯示 自定義 borde 技術 誤報 處理 一,錯誤通常分3種 二,錯誤的分級 三,錯誤的觸發 四,顯示錯誤報告 問題一:設置顯示錯誤報告 問題二:顯示哪些級別的錯誤報告 五,錯誤日誌的記錄問題 問題一

jQuery jsonp跨域請求

路徑 下使用 utf 顯示 我們 ole show height json 跨域的安全限制都是對瀏覽器端來說的,服務器端是不存在跨域安全限制的。 瀏覽器的同源策略限制從一個源加載的文檔或腳本與來自另一個源的資源進行交互。 如果協議,端口和主機對於兩個頁面是相同的,則兩個頁面

PHP函數篇十進制、二進制、八進制和十六進制轉換函數說明

ima hat base 價值 所有 十進制 str from 字節 一,十進制(decimal system)轉換函數說明 1,十進制轉二進制 decbin() 函數,如下實例 echo decbin(12); //輸出 1100 echo decbin(26); //輸

Charles抓取http請求

linu 代理ip 端口號 容易 execute gpo 情況 HA nts 使用過Charles進行抓包,但一直也沒有總結過,今天講講Charles如何進行抓包,修改請求,修改返回值。 一、Charles介紹 Charles是一款跨平臺的抓包工具,windows,ma

爬蟲學習筆記(二)http請求

not found 上傳 取數 found 語法錯誤 爬蟲學習 訪問 request 永久 上篇博客裏面寫了,爬蟲就是發http請求(瀏覽器裏面打開發送的都是http請求),然後獲取到response,咱們再從response裏面找到想要的數據,存儲到本地。 咱們本章就來說

PHP循環語句

循環語句循環結構 一、while循環 while(表達式) { 循環體;//反復執行,直到表達式為假 } 代碼: $index = 1; while ($index<5) { print "Number is {$index} "; $index++; } print "

PHP共享內存

經典 some 交換 time 系統 fopen 函數 ear bsp 這一 使用場景 監控匯總 目前正在用的一個場景,針對某一臺機器上的錯誤進行匯總並報警,我們把一分鐘之內的相同報警合並成一條,用共享內存來暫存,非常實用且高效。 PHP SESSION 如果你是單

跨域發送HTTP請求

ext open author read stat 請求 buffere keyset post ------------吾亦無他,唯手熟爾,謙卑若愚,好學若饑------------- 本篇博客講述幾種跨域發HTTP請求的幾種方

curl傳送請求上傳檔案(multipart file upload)

折騰一下午的問題 第三方介面需要我們傳multipart 上傳檔案 curl一直各種試不成功,用Restlet Client工具總是能成功! 對比傳送的頭,發現工具在Content-Type: multipart/form-data;後面多了個這個boundary 然後去查了下

PHP錯誤異常處理

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

vue-resource 跨域 post請求

vue-resource 跨域 post請求時,需要後端工程師配合設定 Access-Control-Allow-Origin 為 * 在使用之前要下載和引入:cnpm install vue-resource --save  //這裡我使用的是淘寶的cn

php-fpm優化方法

原文: https://www.cnblogs.com/feng18/p/6224638.html 作者:zjfeng   php-fpm優化方法 php-fpm存在兩種方式,一種是直接開啟指定數量的php-fpm程序,不再增加或者減少; 另一種則是開始時開啟一定