CGI中GET與POST的區別
阿新 • • 發佈:2019-02-06
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方法好。
如果以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方法好。