日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

十分钟搞懂什么是CGI

發布時間:2024/4/17 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 十分钟搞懂什么是CGI 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文:CGI Made Really Easy,在翻譯的過程中,我增加了一些我在學習過程中找到的更合適的資料,和自己的一些理解。不能算是嚴格的翻譯文章,應該算是我的看這篇文章的過程的隨筆吧。

CGI真的很簡單

在此之前,你或許聽說過很多說CGI‘晦澀難懂’的言論。如果你會寫最基本的輸入輸出,那么你就可以寫出一個CGI腳本。如果你已經是一個程序員,你只需要幾分整就可以明白CGI到底是個什么東西。如果你還不是一個名程序員,對不起這篇文章不是很適合你,你可以先去學習一些編程的知識,例如腳本語言或者shell編程。但你學完了這些,再回過頭來看!那么讓我們開始吧!

這篇文章是寫一個CGI腳本用于處理HTML提交的表單。雖然跳過了一些細節,但是可以讓你在短時間內搞明白。

什么是CGI?

CGI不是一門編程語言。它是網頁的表單和你寫的程序之間通信的一種協議??梢杂萌魏握Z言寫一個CGI腳本,這些語言只要能接收輸入輸出信息,讀取環境變量。所以,幾乎所有的編程語言都能寫一個CGI腳本,例如:python(把我大python放在第一個!),C,甚至是shell腳本。

CGI腳本的結構

典型的CGI腳本做了如下的事情:

  • 讀取用戶提交表單的信息。
  • 處理這些信息(也就是實現業務)。
  • 輸出,返回html響應(返回處理完的數據)。
    下面主要解釋,第一步和最后一步
  • 讀取用戶提交的表單

    當用戶填寫完表單,點擊提交按鈕的時候。CGI腳本接收用戶表單的數據,這些數據都是k-v的集合的形式(也就是python中的字典)。這里有寫實現的例子:python

    如果你已經通過上面的例子看懂了,下面的就可以忽略了。如果你還有些不懂請看下面來那兩個長的字符串。

    • “name1=value1&name2=value2&name3=value3”
    • "name1=value1;name2=value2;name3=value3"

    區別就是:‘&’和‘;’這兩個符號,他們的作用都是分隔參數。下面還有兩件事情要做。

  • 把所有的‘+’變成‘空格’
  • 把所有的符號都轉譯成‘%xx’樣式的符號,例如:‘%3d’轉化成‘=’
  • 這樣做是為了統一用戶的輸入,使用統一的URL-encoded進行轉譯。

    那么你從哪里得到這些轉譯完的字符串呢?根據提交時的時候選用的是什么HTTP方法:

    • GET方法,環境變量是通過URL來傳遞的,例如:我google‘URL encoded’ 點擊搜索提交的請求就是: https://www.google.co.jp/search?q=URL+encoded(我省略其他一些干擾項,注意‘空格’轉化成了‘+’
    • POST方法,通過HTTP消息主體傳遞的。注意:POST方法編碼類型有:application/x-www-form-urlencoded 或 multipart/form-data。

    我找了一個很好的資料,很短,一路了然:POST對比GET方法

    總結:CGI接收的用戶數據,是通過http協議傳遞過來的。而選用不同的‘Method’:GET或POST對CGI的接收沒有任何影響。這段是讓你明白:數據是怎么通過http協議傳輸的。

    發送響應(Response)返回給用戶

    首先,第一行要寫:Content-type: text/html

    新起一行,用于輸出數據。寫好HTML響應頁面。這個頁面是:當你的腳本處理完數據后,返回給用戶的結果。

    是的,你可以隨意編寫返回的HTML代碼。HTML很簡單,而且方便。

    我的總結

    CGI是一種通信協議,它把用戶傳遞過來的數據轉變成一個k-v的字典。這個字典中不光有用戶的數據,還有HTTP協議的參數。它做的就是把數據,組織成一個固定結構形式的數據。方便任何符合CGI協議的程序都可以調用!但是CGI不是負責通信(傳輸數據)的,通信的話是通過socket,也就是server,例如上面例子中,是通過Apache進行通信。之后調用CGI腳本,把數據轉變成符合CGI協議的數據結構,用于后面的數據處理!

    這個系列文章完成后,后面還有一個實戰系列。從頭寫一個web服務器,敬請期待!

    轉載于:https://www.cnblogs.com/xueweihan/p/5319893.html

    總結

    以上是生活随笔為你收集整理的十分钟搞懂什么是CGI的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。