• Http协议初学


    1. Http协议

    超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的www文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。

      1.1 客户端与服务端交互

    通常,由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端发送过来的请求。一旦收到请求,服务器(向客户端)发回一个状态行,比如"HTTP/1.1 200 OK",和(响应的)消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。

      1.2 Http消息

    HTTP请求的格式为:

    HTTP请求

     

     

     

     

     

     

     

    HTTP响应的格式为:

     

    HTTP响应

     

    从上面可以看出HTTP的请求和响应消息的首部均包含可变数量的字段,用一个空行(blank line)将所有首部字段(header)与消息主体(body)分隔开来。一个首部字段由字段名和随后的冒号、一个空格和字段值组成,字段名不区分大小写

    报文头可分为三类:一类应用于请求,一类应用于响应,还有一类描述主体。有一些报文头(例如:Date)既可用于请求又可用于响应。描述主体的报文头可以出现在POST请求和所有响应报文中。

      1.3Http请求的方法

    HTTP/1.1协议中共定义了八种方法(有时也叫“动作”)来表明Request-URI指定的资源的不同操作方式:

      OPTIONS 

    返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送'*'的请求来测试服务器的功能性。

      HEAD 

    向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。

      GET 

    向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的操作中,例如在Web Application中。其中一个原因是GET可能会被网络蜘蛛等随意访问。

      POST 

    向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。

      PUT 

    向指定资源位置上传其最新内容。

      DELETE 

    请求服务器删除Request-URI所标识的资源。

      TRACE 

    回显服务器收到的请求,主要用于测试或诊断。

      CONNECT 

    HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

    1.5   Http响应代码

     

    3.    Get与Post的差异

      GET是从服务器上获取数据,POST是向服务器传送数据。

      GET是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。POST是通过HTTP POST机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。

      对于GET方式,服务器端用Request.QueryString获取变量的值,对于POST方式,服务器端用Request.Form获取提交的数据。

      GET传送的数据量较小,不能大于2KB(这主要是因为受URL长度限制)。POST传送的数据量较大,一般被默认为不受限制。但理论上,限制取决于服务器的处理能力。

      GET安全性较低,POST安全性较高。因为GET在传输过程,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求URL记录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。另外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一同显示在用户面前。POST的所有操作对用户来说都是不可见的。

    在FORM提交的时候,如果不指定Method,则默认为GET请求(.net默认是POST),Form中提交的数据将会附加在url之后,以?分开与url分开。字母数字字符原样发送,但空格转换为“+”号,其它符号转换为%XX,其中XX为该符号以16进制表示的ASCII(或ISO Latin-1)值。

    4.    C#如何使用POST、GET等操作

    6.1.   HttpWebRequest

    这个类实现客户端向服务器端发送HTTP消息。

    6.2.   HttpWebResponse

    这个类实现客户端接受服务器端的HTTP响应。

     

  • 相关阅读:
    测量标准体重
    bytearray和file的后端上传方式
    jdbc in postgres
    Using dblink in Postgres
    计算文件的MD5值(Java & Rust)
    spring读写分离(配置多数据源)[marked]
    Spring Transaction + MyBatis SqlSession事务管理机制[marked]
    jetty ZipException: invalid entry size
    maven
    KAL1 LINUX 官方文档之虚拟化 --- 转换为OVA
  • 原文地址:https://www.cnblogs.com/Med1tator/p/6384127.html
Copyright © 2020-2023  润新知