zoukankan      html  css  js  c++  java
  • JavaWeb之HTTP协议

    作者:刘婧怡

    时间:2019.03.25

    主机环境:MacBookPro


     

    HTTP协议

    1. HTTP协议

    • HTTP(hypertext transport protocol),即超文本传输协议。这个协议详细规定了浏览器和万维网服务器之间互相通信的规则。

    • HTTP就是一个通信规则,通信规则规定了客户端发送给服务器的内容格式,也规定了服务器发送给客户端的内容格式。

    • 请求协议:客户端发送给服务器的格式

      响应协议:服务器发送给客户端的格式

     

    2. HTTP请求协议

    • HTTP请求是无状态请求

    • 格式:

      请求首行
      请求头信息
      空行
      请求体

     

    GET/hello/index.jspHTTP/1.1
    Host:localhost
    User-Agent:Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0
    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
    Accept-Charset:GB2312,utf-8;q=0.7,*;q=0.7
    Connection:keep-alive
    Cookie:JSESSIONID=369766FDF6220F7803433C0B2DE36D98
      • GET /hello/index.jsp HTTP/1.1:GET请求,请求服务器路径为/hello/index.jsp,协议为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:支持的压缩格式。数据在网络上传递时,可能服务器会把数据压缩后再发送;

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

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

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

    • POST请求

    POST/hello/index.jspHTTP/1.1 
    Accept:image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */*
    Referer:http://localhost:8080/hello/index.jsp
    Accept-Language:zh-cn,en-US;q=0.5
    User-Agent:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
    Content-Type:application/x-www-form-urlencoded
    Accept-Encoding:gzip, deflate
    Host:localhost:8080
    Content-Length:13
    Connection:Keep-Alive
    Cache-Control:no-cache
    Cookie:JSESSIONID=E365D980343B9307023A1D271CC48E7D
    
    keyword=hello 

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

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

        Referer: http://localhost:8080/hello/index.jsp:表示请求来自哪里,从哪发出的请求。可以用来做统计工作,也可以用来做防盗链。

     

    3. 响应协议

    • 格式

    响应首行(协议/版本 状态码 状态码的解析)
    响应头信息(key:value)
    空行
    响应体
    • 代码

    响应首行:
    HTTP/1.1 200 OK 
    响应头信息:
    Server: Apache-Coyote/1.1   服务器的版本信息
    Content-Type: text/html;charset=UTF-8   响应体使用的编码
    Content-Length: 724   响应体为724字节
    Set-Cookie: JSESSIONID=C97E2B4C55553EAB46079A4F263435A4; Path=/hello   响应给客户端的Cookie
    Date: Wed, 25 Sep 2012 04:15:03 GMT   响应的时间,可能有八小时的时区差
    空行:
    ​
    响应体:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
     <head>
       <basehref="http://localhost:8080/hello/">
       
       <title>My JSP 'index.jsp' starting page</title>
    <metahttp-equiv="pragma"content="no-cache">
    <metahttp-equiv="cache-control"content="no-cache">
    <metahttp-equiv="expires"content="0">   
    <metahttp-equiv="keywords"content="keyword1,keyword2,keyword3">
    <metahttp-equiv="description"content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
     </head>
     
     <body>
    <formaction=""method="post">
    关键字:<inputtype="text"name="keyword"/>
     <inputtype="submit"value="提交"/>
    </form>
     </body>
    </html>
    • 状态码(响应码)

      • 200:请求成功,浏览器会把响应体内容(通常是html)显示在浏览器中

      • 404:请求的资源没有找到,说明客户端错误的请求了不存在的资源,4打头的都是客户端的错误

      • 500:请求资源找到了,但服务器内部出现了错误,5打头的都是服务器的错误

      • 302:重定向,表示服务器要求浏览器重新在发送一个请求。服务器会向客户端发送一个响应头location,指定新的URL地址,客户端访问新的URL

     

  • 相关阅读:
    Android 3.0 r1 API中文文档(108) —— ExpandableListAdapter
    Android 3.0 r1 API中文文档(113) ——SlidingDrawer
    Android 3.0 r1 API中文文档(105) —— ViewParent
    Android 中文 API (102)—— CursorAdapter
    Android开发者指南(4) —— Application Fundamentals
    Android开发者指南(1) —— Android Debug Bridge(adb)
    Android中文API(115)——AudioFormat
    Android中文API(116)——TableLayout
    Android开发者指南(3) —— Other Tools
    Android中文API (110) —— CursorTreeAdapter
  • 原文地址:https://www.cnblogs.com/jyliu/p/10601388.html
Copyright © 2011-2022 走看看