Details about HTTP

HTTP(Hyper Text Transfer Protocol) is managed by W3C institute. There are two versions 1.0 and 1.1. The version 1.1 is used widely.

But what's the difference of the two versions?

  Version 1.0 : the request sended to the server and the response back to the client then the connection will be closed immediately.

  Version 1.1 : the connection could be used many times.

How to prove the difference? Use the telnet command in cmd.

The http request and http response are two main parts.

Request:

  GET /myapp/1.html HTTP/1.1             ----->  the submit method ; the source's path ; the http's version

  Host: localhost:8080          ----->  the host's address include the host's name and the port

  Connection: keep-alive        ------> the connection status

  Upgrade-Insecure-Requests: 1          ------> 

  User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36

  Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8       -----> the accepted MIME type , we can search the name via web.xml

                                            which has the tag :

                                                    <mime-mapping>

                                                      <extension>html</extension>

                                                      <mime-type>text/html</mime-type>

                                                    </mime-mapping>

  Accept-Encoding: gzip, deflate, sdch, br  -----> tell the server the browser support which kind of encoding type.

  Accept-Language: zh-CN,zh;q=0.8   -----> the language browser could use.The header's value could be set in the browser's setting . "q=0.8" represents the                     using frequncy of the language.The accept-language could support different accept-charset.

  Referer:http://localhost:8080/myapp/2.html  -----> Include an URL and user accesses the page via the URL.Referer could be used to count the flow.

  -----> there should reserve a blank row

Response:

  HTTP/1.1 200 OK           ----->  the http version ; the status code(200:normal 302:foward 404:resource not found 500:server error) ;

                        the connecting status

  Server: Apache-Coyote/1.1         -----> 

  Accept-Ranges: bytes

  ETag: W/"43-1499953570000"

  Last-Modified: Thu, 13 Jul 2017 13:46:10 GMT

  Content-Type: text/html       -----> the MIME type which the server send to the client.  

  Content-Length: 43        -----> tell the client the text's length 

  Date: Fri, 14 Jul 2017 14:52:58 GMT

  Refresh:1                    -----> refresh the page per sceond.

  Location:http://www.it315org/index.jsp      -----> forward to the new resource location.

  Content-Disposition: attachment;filename=aaa.zip                      -----> indicate the client to download the file.

  Set-Cookie:SS=Q0=5Lb_nQ;path=/search

  Expires:-1                                     ----->  the value=-1 means the page's cache will be destroied immediately.

  Cache-Control:no-cache(1.1)  -----> the page's cache will not exist.

  Pragma:no-cache(1.0)

  Connection:close/Keep-alive

  -----> there should reserve a blank row 

  <body>                ----
    <h1>Hello JavaWeb!</h1>       | ----> this is the response's entity content
  </body>                 ---- 

The GET method to submit data , the data will be put in the url address and start with "?" followed with the data and the data's value.

While the POST method to submit the data , the data will be put in the request enetity and the data's capacity is unlimited.

原文地址:https://www.cnblogs.com/ppcoder/p/7183329.html