1. 程式人生 > >CGI中GET與POST的區別

CGI中GET與POST的區別

GET與POST的區別在於:(對於CGI) 

如果以GET方式傳輸,所帶引數附加在CGI程式的URL後直接傳給server,並可從server端的QUERY_STRING這個環境變數中讀取; 

如果以POST方式傳輸,則引數會被打包在資料報中傳送給server,並可從CONTENT_LENGTH這個環境變數中讀取出來。 

還有一種情況是,你用的是GET方式,但傳送的引數是路徑,如: 

----< ahref="/cgi-bin/a.pl/usr/local/bin/pine" >CGI< /a > 

----這時所傳遞的引數"/usr/local/bin/pine"存放在PATH_INFO這個環境變數中。環境變數的讀取方式為$str=$ENV{'QUERY_STRING'}; 




理論上說,GET是從伺服器上請求資料,POST是傳送資料到伺服器。事實上,GET方法是把資料引數佇列(query string)加到一個URL上,值和表單是一一對應的。比如說,name=John。在佇列裡,值和表單用一個&符號分開,空格用+號替換,特殊的符號轉換成十六進位制的程式碼。因為這一佇列在URL裡邊,這樣佇列的引數就能看得到,可以被記錄下來,或更改。通常GET方法還限制字元的大小。事實上POST方法可以沒有時間限制的傳遞資料到伺服器,使用者在瀏覽器端是看不到這一過程的,所以POST方法比較適合用於傳送一個保密的(比如信用卡號)或者比較大量的資料到伺服器。 

Post是允許傳輸大量資料的方法,而Get方法會將所要傳輸的資料附在網址後面,然後一起送達伺服器,因此傳送的資料量就會受到限制,但是執行效率卻比Post方法好。