我所了解的cgi

2021-07-08 19:59:59 字數 1834 閱讀 4450

對於cgi,一開始我並沒有理解,一些概念性的東西,常常使我陷入咬文嚼字的陷阱裡。我希望找到乙個通俗易懂的案例,下面這段資料我個人覺得講得非常清楚:

最早的web伺服器簡單地響應瀏覽器發來的http請求,並將儲存在伺服器上的html檔案返回給瀏覽器,也就是靜態html。事物總是不斷發展,**也越來越複雜,所以出現動態技術。但是伺服器並不能直接執行 php,asp這樣的檔案,自己不能做,外包給別人吧,但是要與第三做個約定,我給你什麼,然後你給我什麼,就是握把請求引數傳送給你,然後我接收你的處理結果給客戶端。那這個約定就是 common gateway inte***ce,簡稱cgi。這個協議可以用vb,c,php,python 來實現。cgi只是介面協議,根本不是什麼語言。下面圖可以看到流程

web伺服器將根據cgi程式的型別決定資料向cgi程式的傳送方式,一般來講是通過標準輸入/輸出流和環境變數來與cgi程式間傳遞資料。 如下圖所示:

cgi程式通過標準輸入(stdin)和標準輸出(stdout)來進行輸入輸出。此外cgi程式還通過環境變數來得到輸入,作業系統提供了許多環境變數,它們定義了程式的執行環境,應用程式可以訪問它們。web伺服器和cgi介面又另外設定了一些環境變數,用來向cgi程式傳遞一些重要的引數。cgi的get方法還通過環境變數query-string向cgi程式傳遞form中的資料。 下面是一些常用的cgi環境變數:

引數列表:

變數名

描述content_type

content_length

如果伺服器與cgi程式資訊的傳遞方式是post,這個環境變數即使從標準輸入stdin中可以讀到的有效資料的位元組數。這個環境變數在讀取所輸入的資料時必須使用。

客戶機內的 cookie 內容。

提供包含了版本數或其他專有資料的客戶瀏覽器資訊。

path_info

這個環境變數的值表示緊接在cgi程式名之後的其他路徑資訊。它常常作為cgi程式的引數出現。

query_string

如果伺服器與cgi程式資訊的傳遞方式是get,這個環境變數的值即使所傳遞的資訊。這個資訊經跟在cgi程式名的後面,兩者中間用乙個問號』?』分隔。

remote_addr

這個環境變數的值是傳送請求的客戶機的ip位址,例如上面的192.168.1.67。這個值總是存在的。而且它是web客戶機需要提供給web伺服器的唯一標識,可以在cgi程式中用它來區分不同的web客戶機。

remote_host

這個環境變數的值包含傳送cgi請求的客戶機的主機名。如果不支援你想查詢,則無需定義此環境變數。

request_method

提供指令碼被呼叫的方法。對於使用 http/1.0 協議的指令碼,僅 get 和 post 有意義。

script_filename

cgi指令碼的完整路徑

script_name

cgi指令碼的的名稱

server_name

這是你的 web 伺服器的主機名、別名或ip位址。

server_software

這個環境變數的值包含了呼叫cgi程式的http伺服器的名稱和版本號。例如,上面的值為apache/2.2.14(unix)

參考資料

我所了解的LBS

lbs location based service,基於位置的服務。用通俗的話來描述這門技術的現實應用 讓世界知道你現在的位置,然後你可以知道你想關心的任何東西的位置。反正,和位置很相關 乙個很經典,很未來的lbs描述 這條微博紛紛被讚為lbs最佳商業應用,創造了上萬條的 記錄並被模仿,衍生了海底...

我所了解的遞迴

所謂遞迴,就是當你需要完成某個功能時發現下一層次的需求跟上一層次的需求相同,相同到如果完成整個功能可能需要寫無數相同 段 這個時候我們可以不可以使用while迴圈或者多層迴圈巢狀呢,可以,但是它並不能完美解決所有要求,貼出 使用該字典根據輸入要查詢的城市 輸出他的二級城市或地點 menu 網易 go...

我所了解的軟體除錯(未完)

軟體有測試和除錯。現有測試,發現錯誤了,然後除錯,找到bug改正。除錯方式多種多樣,所以我準備介紹下我所接觸的所有除錯方法。除錯技巧 查bug 1.列印錯誤資訊,獲得最後一次錯誤 可以加在不確定的函式後面 如 openproccse int e getlasterrorr cout e tool e...