zoukankan      html  css  js  c++  java
  • http协议

    1、请求协议

    2、get 请求

    3、post 请求

    4、响应协议


    1、请求协议

    请求首行;  # 请求方式 请求路径 协议和版本,例如:GET  /index.html  HTTP/1.1
    请求头信息;# 请求头名称:请求头内容,即为key:value格式,例如:Host:localhost
    空行;     # 用来与请求体分隔开
    请求体。   # GET没有请求体,只有POST有请求体

    2、get 请求

        HTTP默认的请求方法就是GET
            * 没有请求体
            * 数据必须在1K之内!
            * GET请求数据会暴露在浏览器的地址栏中

    • GET 127.0.0.1:8090/login HTTP/1.1:GET请求,请求服务器路径为 127.0.0.1:8090/login ,协议为1.1

    • Host: localhost:请求的主机名为localhost;

    • User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0:与浏览器和OS相关的信息。有些网站会显示用户的系统版本和浏览器版本信息,这都是通过获取User-Agent头信息而来的;

    • Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8:告诉服务器,当前客户端可以接收的文档类型,其实这里包含了*/*,就表示什么都可以接收;

    • Accept-Language: zh-cn,zh;q=0.5:当前客户端支持的语言,可以在浏览器的工具选项中找到语言相关信息;

    • Accept-Encoding: gzip, deflate:支持的压缩格式。数据在网络上传递时,可能服务器会把数据压缩后再发送;指定客户端浏览器可以支持的web服务器返回内容压缩编码类型。表示允许服务器在将输出内容发送到客户端以前进行压缩,以节约带宽。而这里设置的就是客户端浏览器所能够支持的返回压缩格式。

    • Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7:客户端支持的编码;

    • Connection: keep-alive:客户端支持的链接方式,保持一段时间链接,默认为3000ms;

    • Cookie: JSESSIONID=369766FDF6220F7803433C0B2DE36D98:因为不是第一次访问这个地址,所以会在请求中把上一次服务器响应中发送过来的Cookie在请求中一并发送去过;这个

      Cookie的名字为JSESSIONID。

    3、post 请求

        (1) 数据不会出现在地址栏中
        (2) 数据的大小没有上限
        (3) 有请求体
        (4) 请求体中如果存在中文,会使用URL编码!

    • Referer: http://localhost:8080/hello/index.jsp:请求来自哪个页面,例如你在百度上点击链接到了这里,那么Referer:http://www.baidu.com;如果你是在浏览器的地址栏中直接输入的地址,那么就没有Referer这个请求头了;它可以用来做统计工作,也可以用来做防盗链。

    • Content-Type: application/x-www-form-urlencoded:表单的数据类型,说明会使用url格式编码数据;url编码的数据都是以“%”为前缀,后面跟随两位的16进制。

      显示此HTTP请求提交的内容类型。一般只有post提交时才需要设置该属性
      有关Content-Type属性值有如下两种编码类型:
       (1)“application/x-www-form-urlencoded”: 表单数据向服务器提交时所采用的编码类型,默认的缺省值就是“application/x-www-form-urlencoded”。然而,在向服务器发送大量的文本、包含非ASCII字符的文本或二进制数据时这种编码方式效率很低。
       (2)“multipart/form-data”: 在文件上载时,所使用的编码类型应当是“multipart/form-data”,它既可以发送文本数据,也支持二进制数据上载。

      当提交为表单数据时,可以使用“application/x-www-form-urlencoded”;当提交的是文件时,就需要使用“multipart/form-data”编码类型。

    • Content-Length:13:请求体的长度,这里表示13个字节。

    • keyword=hello:请求体内容!hello是在表单中输入的数据,keyword是表单字段的名字。

    4、响应协议

       响应首行;     HTTP协议版本号, 状态码, 状态消息
       响应头信息;
       空行;
       响应体 html页面

    • HTTP/1.1 200 OK:响应协议为HTTP1.1,状态码为200,表示请求成功,OK是对状态码的解释;
    • Server:WSGIServer/0.2 CPython/3.5.2:服务器的版本信息;

    • Content-Type: text/html;charset=UTF-8:响应体使用的编码为UTF-8;

    • Content-Length: 724:响应体为724字节;

    • Set-Cookie: JSESSIONID=C97E2B4C55553EAB46079A4F263435A4; Path=/hello:响应给客户端的Cookie;

    • Date: Wed, 25 Sep 2012 04:15:03 GMT:响应的时间,这可能会有8小时的时区差;

      告诉浏览器不要缓存的响应头:

    • Expires: -1;

    • Cache-Control: no-cache;

    • Pragma: no-cache;

      自动刷新响应头,浏览器会在3秒之后请求http://www.baidu.com

    • Refresh: 3;url=http://www.baidu.com 

     HTML中指定响应头

    在HTMl页面中可以使用<meta http-equiv="" content="">来指定响应头,例如在index.html页面中给出<meta http-equiv="Refresh" content="3;url=http://www.baidu.com">,表示浏览器只会显示index.html页面3秒,然后自动跳转到http://www.baidu.com.

     

  • 相关阅读:
    MyEclipse的配置--博客园老牛大讲堂
    Hbuilder连接夜神模拟器---博客园老牛大讲堂
    APICloud连接夜神模拟器--博客园老牛大讲堂
    H5混合开发APP配置以及第一个工程--博客园老牛大讲堂
    实现标签页(菜单栏)--博客园老牛大讲堂
    H5动态添加数据-博客园老牛大讲堂
    bootstrap实现网页手风琴--博客园老牛大讲堂
    返回零长度的数组或集合,而不是null
    用EnumMap代替序数索引
    用EnumSet代替位域
  • 原文地址:https://www.cnblogs.com/snailgirl/p/9041082.html
Copyright © 2011-2022 走看看