成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Django接收自定義httpheader過程詳解-創(chuàng)新互聯(lián)

add by zhj: Django將所有http header(包括你自定義的http header)都放在了HttpRequest.META這個Python標(biāo)準(zhǔn)字典中,當(dāng)然HttpRequest.META

站在用戶的角度思考問題,與客戶深入溝通,找到江干網(wǎng)站設(shè)計與江干網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、空間域名、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋江干地區(qū)。

中還包含其它一些鍵值對,這些鍵值對是Django加進去的,如SERVER_PORT等。對于http header,Django進行了重命名,規(guī)則如下

(1) 所有header名大寫,將連接符“-”改為下劃線“_”

(2) 除CONTENT_TYPE和CONTENT_LENGTH,其它的header名稱前加“HTTP_”前綴

參見 https://docs.djangoproject.com/en/1.6/ref/request-response/#django.http.HttpRequest.META

我個人比較喜歡跟蹤源代碼來查看,源代碼如下,

class WSGIRequestHandler(BaseHTTPRequestHandler):

  server_version = "WSGIServer/" + __version__

  def get_environ(self):
    env = self.server.base_environ.copy()
    env['SERVER_PROTOCOL'] = self.request_version
    env['REQUEST_METHOD'] = self.command
    if '?' in self.path:
      path,query = self.path.split('?',1)
    else:
      path,query = self.path,''

    env['PATH_INFO'] = urllib.unquote(path)
    env['QUERY_STRING'] = query

    host = self.address_string()
    if host != self.client_address[0]:
      env['REMOTE_HOST'] = host
    env['REMOTE_ADDR'] = self.client_address[0]

    if self.headers.typeheader is None:
      env['CONTENT_TYPE'] = self.headers.type
    else:
      env['CONTENT_TYPE'] = self.headers.typeheader

    length = self.headers.getheader('content-length')
    if length:
      env['CONTENT_LENGTH'] = length

    for h in self.headers.headers:
      k,v = h.split(':',1)
      k=k.replace('-','_').upper(); v=v.strip()
      if k in env:
        continue          # skip content length, type,etc.
      if 'HTTP_'+k in env:
        env['HTTP_'+k] += ','+v   # comma-separate multiple headers
      else:
        env['HTTP_'+k] = v
    return env

  def get_stderr(self):
    return sys.stderr

  def handle(self):
    """Handle a single HTTP request"""

    self.raw_requestline = self.rfile.readline()
    if not self.parse_request(): # An error code has been sent, just exit
      return

    handler = ServerHandler(
      self.rfile, self.wfile, self.get_stderr(), self.get_environ()
    )
    handler.request_handler = self   # backpointer for logging
    handler.run(self.server.get_app())

本文名稱:Django接收自定義httpheader過程詳解-創(chuàng)新互聯(lián)
文章源于:http://jinyejixie.com/article36/gpcpg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗、云服務(wù)器、移動網(wǎng)站建設(shè)、網(wǎng)站改版、定制開發(fā)App開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機網(wǎng)站建設(shè)
广元市| 甘泉县| 庆云县| 泽库县| 彰化市| 湖州市| 张家港市| 洛阳市| 石阡县| 台东市| 涿鹿县| 银川市| 江孜县| 营口市| 女性| 榆中县| 兴海县| 禹州市| 驻马店市| 望城县| 棋牌| 兰溪市| 北票市| 大姚县| 浦城县| 行唐县| 夏津县| 凭祥市| 娱乐| 灵璧县| 昌宁县| 商河县| 三台县| 石屏县| 格尔木市| 滦平县| 土默特右旗| 庐江县| 若尔盖县| 达孜县| 佛冈县|