zoukankan      html  css  js  c++  java
  • HTTP 概述

    HTTP 协议是 Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(World Wide Web )服务器传输超文本到本地浏览器的传送协议。

    HTTP 是一个基于 TCP/IP 通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。

    一个完整的 Web 文档通常是由不同的子文档拼接而成的,像是文本、布局描述、图片、视频、脚本等等。

    (图片来源:MDN web docs)

    一、HTTP 的基本性质

    1、HTTP是简单的

    虽然下一代HTTP/2协议将HTTP消息封装到了帧(frames)中,HTTP大体上还是被设计得简单易读。HTTP报文能够被人读懂,还允许简单测试,降低了门槛,对新人很友好。

    2、HTTP是可扩展的

    在 HTTP/1.0 中出现的 HTTP headers 让协议扩展变得非常容易。只要服务端和客户端就新 headers 达成语义一致,新功能就可以被轻松加入进来。

    3、HTTP是无状态的

    HTTP是无状态的。在同一个连接中,两个执行成功的请求之间是没有关系的。这就带来了一个问题,用户没有办法在同一个网站中进行连续的交互,比如在一个电商网站里,用户把某个商品加入到购物车,切换一个页面后再次添加了商品,这两次添加商品的请求之间没有关联,浏览器无法知道用户最终选择了哪些商品。而使用HTTP的头部扩展,HTTP Cookies就可以解决这个问题。把Cookies添加到头部中,创建一个会话让每次请求都能共享相同的上下文信息,达成相同的状态。

    注意:HTTP本质是无状态的,使用Cookies可以创建有状态的会话。

    二、MIME 类型

    MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准。MIME Type 是该资源的媒体类型,MIME Type 不是个人指定的,是经过互联网(IETF)组织协商,以 RFC 文件的形式作为建议的标准发布在网上的,大多数的 Web 服务器和用户代理都会支持这个规范。

    媒体类型通常通过 HTTP 协议,由 Web 服务器告知浏览器的,具体是通过 Content-Type响应头来表示的。例如:Content-Type:text/html

    MIME 消息能包含文本、图像、音频、视频以及其他应用程序专用的数据。

    下面将列出一些常用的 MIME 类型:

    类型/子类型 扩展名
    application/msword doc
    application/octet-stream *
    application/pdf pdf
    application/vnd.ms-powerpoint ppt
    application/x-gzip gz
    application/x-javascript js
    audio/x-wav wav
    image/bmp bmp
    image/gif gif
    image/jpeg jpeg / jpg
    text/css css
    text/html html / htm /stm
    video/mpeg mpeg

    若需获知更多关于 MIME Type 的信息,请参阅:

    • RFC 822 - Standard for ARPA Internet text messages
    • RFC 2045 - MIME Part 1: Format of Internet Message Bodies
    • RFC 2046 - MIME Part 2: Media Types
    • RFC 2047 - MIME Part 3: Header Extensions for Non-ASCII Text
    • RFC 2048 - MIME Part 4: Registration Procedures
    • RFC 2049 - MIME Part 5: Conformance Criteria and Examples

    也可参阅:

    W3school - MIME 参考手册

  • 相关阅读:
    JAVA应用apache httpclient探测http服务
    C#中字符串与byte[]相互转换
    C#中位、字节等知识
    #JAVA操作LDAP
    C#正则表达式判断字符串是否是金钱
    【IDEA】使用Maven骨架创建JavaWeb项目
    【IDEA】回退操作记录
    【SpringMVC】IDEA 不识别webapp的解决办法
    【Layui】16 表单元素 Form
    【Layui】15 日期时间选择器 Laydate
  • 原文地址:https://www.cnblogs.com/fzcoder/p/14104824.html
Copyright © 2011-2022 走看看