cgi的應用

image

在處理一個頁面請求時咱們通常會須要用到一下信息:javascript

  1. 請求頭, 請求頭裏邊包含了不少的信息如COOKIE、URI等. 能夠協助咱們處理請求
  2. 提交的參數, 用戶經過GET/POST請求提交上來的參數.
  3. 根據1-2的輸入, 進行自定義的處理過程
  4. 輸出html頁面, 或json數據(API接口)

如何獲取請求頭的信息css

import os


# 這是返回給客戶端的請求頭
print("Content-type: text/html\n\n")
print(os.environ)

在輸出界面咱們就能夠看到咱們所提交過去的各類信息.html

GET/POST的請求參數, GET的請求參數咱們能夠經過os.environ裏的QUERY_STRING看到. 而事實上咱們還能夠經過CGI模塊來獲取java

import cgi


# 建立 FieldStorage 的實例化
form = cgi.FieldStorage()
username = form.getvalue('username', default=None)
password = form.getvalue('password', default=None)

print("Content-type: text/html\n\n")
print("Your username is %s, password is %s"% (username, password))

不管是經過GET仍是POST提交的參數, 均可以經過getvalue獲取.python

cgi是經過stdin, stdout來傳遞數據的.要讓可執行文件的輸出不止於helloworld, 那麼就須要把特定的信息輸出到stdout從而輸出至客戶端. 對於REST風格的API而言, 能夠使用json.dumps來生成返回數據. 而若是是做爲網頁形式, 須要返回整個html, 那麼咱們將須要輸出html的dom、css、javascript, 要咱們一行一行把這些東西給輸出到stdout是很是麻煩的. 這時咱們就能夠經過模板語言來構建html.json

由於CGI會直接啓動一個進程來執行腳本, 那麼咱們就須要注意一個安全性的問題. 執行腳本的用戶應該儘可能少擁有無關的權限. 以防被惡意用戶利用.安全

相關文章
相關標籤/搜索