zoukankan      html  css  js  c++  java
  • http中的Content-Type

    要学习content-type,必须事先知道它到底是什么,是干什么用的。

    HTTP协议(RFC2616)采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URI、协议版本、以及包含请求修饰符、客户 信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,相应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以 及可能的实体内容。

    通常HTTP消息由一个起始行,一个或者多个头域,一个只是头域结束的空行和可选的消息体组成。HTTP的头域包括通用头,请求头,响应头和实体头四个部 分。每个头域由一个域名,冒号(:)和域值三部分组成。域名是大小写无关的,域 值前可以添加任何数量的空格符,头域可以被扩展为多行,在每行开始处,使用至少一个空格或制表符。

    请求消息和响应消息都可以包含实体信息,实体信息一般由实体头域和实体组成。实体头域包含关于实体的原信息,实体头包括Allow、Content- Base、Content-Encoding、Content-Language、 Content-Length、Content-Location、Content-MD5、Content-Range、Content-Type、 Etag、Expires、Last-Modified、extension-header。
    Content-Type是返回消息中非常重要的内容,表示后面的文档属于什么MIME类型。Content-Type: [type]/[subtype]; parameter。例如最常见的就是text/html,它的意思是说返回的内容是文本类型,这个文本又是HTML格式的。原则上浏览器会根据Content-Type来决定如何显示返回的消息体内容。

    type有下面的形式。

     

    Text:用于标准化地表示的文本信息,文本消息可以是多种字符集和或者多种格式的;

    Multipart:用于连接消息体的多个部分构成一个消息,这些部分可以是不同类型的数据;

    Application:用于传输应用程序数据或者二进制数据;

    Message:用于包装一个E-mail消息;

    Image:用于传输静态图片数据;

    Audio:用于传输音频或者音声数据;

    Video:用于传输动态影像数据,可以是与音频编辑在一起的视频数据格式。

    subtype用于指定type的详细形式。content-type/subtype配对的集合和与此相关的参数,将随着时间而增长。为了确保这些值在一个有序而且公开的状态下开发,MIME使用Internet Assigned Numbers Authority (IANA)作为中心的注册机制来管理这些值。

    parameter可以用来指定附加的信息,更多情况下是用于指定text/plaintext/htm等的文字编码方式的charset参数。MIME根据type制定了默认的subtype,当客户端不能确定消息的subtype的情况下,消息被看作默认的subtype进行处理。Text默认是text/plainApplication默认是application/octet-streamMultipart默认情况下被看作multipart/mixed

    MIME定义在RFC-2046 MIME Part 2: Media Types 。

    常用类型:

    Mime Types By File Extension

     

    Extension

    Type/sub-type

     

    application/octet-stream

    323

    text/h323

    acx

    application/internet-property-stream

    ai

    application/postscript

    aif

    audio/x-aiff

    aifc

    audio/x-aiff

    aiff

    audio/x-aiff

    asf

    video/x-ms-asf

    asr

    video/x-ms-asf

    asx

    video/x-ms-asf

    au

    audio/basic

    avi

    video/x-msvideo

    axs

    application/olescript

    bas

    text/plain

    bcpio

    application/x-bcpio

    bin

    application/octet-stream

    bmp

    image/bmp

    c

    text/plain

    cat

    application/vnd.ms-pkiseccat

    cdf

    application/x-cdf

    cer

    application/x-x509-ca-cert

    class

    application/octet-stream

    clp

    application/x-msclip

    cmx

    image/x-cmx

    cod

    image/cis-cod

    cpio

    application/x-cpio

    crd

    application/x-mscardfile

    crl

    application/pkix-crl

    crt

    application/x-x509-ca-cert

    csh

    application/x-csh

    css

    text/css

    dcr

    application/x-director

    der

    application/x-x509-ca-cert

    dir

    application/x-director

    dll

    application/x-msdownload

    dms

    application/octet-stream

    doc

    application/msword

    dot

    application/msword

    dvi

    application/x-dvi

    dxr

    application/x-director

    eps

    application/postscript

    etx

    text/x-setext

    evy

    application/envoy

    exe

    application/octet-stream

    fif

    application/fractals

    flr

    x-world/x-vrml

    gif

    image/gif

    gtar

    application/x-gtar

    gz

    application/x-gzip

    h

    text/plain

    hdf

    application/x-hdf

    hlp

    application/winhlp

    hqx

    application/mac-binhex40

    hta

    application/hta

    htc

    text/x-component

    htm

    text/html

    html

    text/html

    htt

    text/webviewhtml

    ico

    image/x-icon

    ief

    image/ief

    iii

    application/x-iphone

    ins

    application/x-internet-signup

    isp

    application/x-internet-signup

    jfif

    image/pipeg

    jpe

    image/jpeg

    jpeg

    image/jpeg

    jpg

    image/jpeg

    js

    application/x-javascript

    latex

    application/x-latex

    lha

    application/octet-stream

    lsf

    video/x-la-asf

    lsx

    video/x-la-asf

    lzh

    application/octet-stream

    m13

    application/x-msmediaview

    m14

    application/x-msmediaview

    m3u

    audio/x-mpegurl

    man

    application/x-troff-man

    mdb

    application/x-msaccess

    me

    application/x-troff-me

    mht

    message/rfc822

    mhtml

    message/rfc822

    mid

    audio/mid

    mny

    application/x-msmoney

    mov

    video/quicktime

    movie

    video/x-sgi-movie

    mp2

    video/mpeg

    mp3

    audio/mpeg

    mpa

    video/mpeg

    mpe

    video/mpeg

    mpeg

    video/mpeg

    mpg

    video/mpeg

    mpp

    application/vnd.ms-project

    mpv2

    video/mpeg

    ms

    application/x-troff-ms

    mvb

    application/x-msmediaview

    nws

    message/rfc822

    oda

    application/oda

    p10

    application/pkcs10

    p12

    application/x-pkcs12

    p7b

    application/x-pkcs7-certificates

    p7c

    application/x-pkcs7-mime

    p7m

    application/x-pkcs7-mime

    p7r

    application/x-pkcs7-certreqresp

    p7s

    application/x-pkcs7-signature

    pbm

    image/x-portable-bitmap

    pdf

    application/pdf

    pfx

    application/x-pkcs12

    pgm

    image/x-portable-graymap

    pko

    application/ynd.ms-pkipko

    pma

    application/x-perfmon

    pmc

    application/x-perfmon

    pml

    application/x-perfmon

    pmr

    application/x-perfmon

    pmw

    application/x-perfmon

    pnm

    image/x-portable-anymap

    pot,

    application/vnd.ms-powerpoint

    ppm

    image/x-portable-pixmap

    pps

    application/vnd.ms-powerpoint

    ppt

    application/vnd.ms-powerpoint

    prf

    application/pics-rules

    ps

    application/postscript

    pub

    application/x-mspublisher

    qt

    video/quicktime

    ra

    audio/x-pn-realaudio

    ram

    audio/x-pn-realaudio

    ras

    image/x-cmu-raster

    rgb

    image/x-rgb

    rmi

    audio/mid

    roff

    application/x-troff

    rtf

    application/rtf

    rtx

    text/richtext

    scd

    application/x-msschedule

    sct

    text/scriptlet

    setpay

    application/set-payment-initiation

    setreg

    application/set-registration-initiation

    sh

    application/x-sh

    shar

    application/x-shar

    sit

    application/x-stuffit

    snd

    audio/basic

    spc

    application/x-pkcs7-certificates

    spl

    application/futuresplash

    src

    application/x-wais-source

    sst

    application/vnd.ms-pkicertstore

    stl

    application/vnd.ms-pkistl

    stm

    text/html

    svg

    image/svg+xml

    sv4cpio

    application/x-sv4cpio

    sv4crc

    application/x-sv4crc

    swf

    application/x-shockwave-flash

    t

    application/x-troff

    tar

    application/x-tar

    tcl

    application/x-tcl

    tex

    application/x-tex

    texi

    application/x-texinfo

    texinfo

    application/x-texinfo

    tgz

    application/x-compressed

    tif

    image/tiff

    tiff

    image/tiff

    tr

    application/x-troff

    trm

    application/x-msterminal

    tsv

    text/tab-separated-values

    txt

    text/plain

    uls

    text/iuls

    ustar

    application/x-ustar

    vcf

    text/x-vcard

    vrml

    x-world/x-vrml

    wav

    audio/x-wav

    wcm

    application/vnd.ms-works

    wdb

    application/vnd.ms-works

    wks

    application/vnd.ms-works

    wmf

    application/x-msmetafile

    wps

    application/vnd.ms-works

    wri

    application/x-mswrite

    wrl

    x-world/x-vrml

    wrz

    x-world/x-vrml

    xaf

    x-world/x-vrml

    xbm

    image/x-xbitmap

    xla

    application/vnd.ms-excel

    xlc

    application/vnd.ms-excel

    xlm

    application/vnd.ms-excel

    xls

    application/vnd.ms-excel

    xlt

    application/vnd.ms-excel

    xlw

    application/vnd.ms-excel

    xof

    x-world/x-vrml

    xpm

    image/x-xpixmap

    xwd

    image/x-xwindowdump

    z

    application/x-compress

    zip

    application/zip

     

     
    对于IE6浏览器来说,如果Content-Type中的类型和实际的消息体类型不一致,那么它会根据内容中的类型来分析实际应该是什么类型,对于JPG、GIF等常用图片格式都可以正确的识别出来,而不管Content-Type中写的是什么。
    如果Content-Type中指定的是浏览器可以直接打开的类型,那么浏览器就会直接打开其内容显示出来,如果是被关联到其它应用程序的类型,这时就要 查找注册表中关于这种类型的注册情况,如果是允许直接打开而不需要询问的,就会直接调出这个关联的应用程序来打开这个文件,但如果是不允许直接打开的,就 会询问是否打开。对于没有关联到任何应用程序的类型,IE浏览器不知道它该如何打开,此时IE6就会把它当成XML来尝试打开。

     如果要想实现文件下载,可以在http的头中加入:

     fprintf( file, "Content-Disposition:attachment; filename="%s" ", fileName);

    经过测试,html,pdf,gif等原来在网页中打开的文件都可以正常实现下载。

  • 相关阅读:
    .Net开发笔记(二十一) 反射在.net中的应用
    .Net开发笔记(二十)创建一个需要授权的第三方组件
    .Net开发笔记(十九) 创建一个可以可视化设计的对象
    .net开发笔记(十八) winform中的等待框
    .Net开发笔记(十七) 应用程序扩展
    java连接https时禁用证书验证.
    How to disable SSL certificate checking with Spring RestTemplate?(使用resttemplate访问https时禁用证书检查)
    webpack打包调试react并使用babel编译jsx配置方法
    动态改变spring定时任务执行频率
    在java代码中,用xslt处理xml文件
  • 原文地址:https://www.cnblogs.com/Gaton/p/3169871.html
Copyright © 2011-2022 走看看