关于HTTP协议的那些东西!

欢迎大家关注笔者的微信公众号:JAVAandPython君

关注后发送“领取资料”即可领取5T技术资源

web服务器和URL

我们首先来讲讲web服务器,Web服务器是指能够为发出请求的浏览器提供文档的程序。服务器是一种被动的程序,只有当我们从浏览器发出请求时才会响应。我们所说的写网站,到最后我们是需要把我们所写的代码部署到web服务器上,这样就可以让全世界的人都能够去访问你的网站,你那里面放置的所有的数据、资源,大家都可以下载。目前最主流的三个Web服务器是Apache,Nginx,IIS。

      然后一个就是我们的URL,例如:“http://www.baidu.com” 这就是一个url,它包含些什么呢?

协议:包括http,https等

域名或者ip地址:www.baidu.com这个就是域名,116.211.94.1这个就是ip地址。

端口号:这里可能没有体现出来,80是我们常用的端口号,程序必须使用端口号才能够让另一台计算机访问。

2

什么是HTTP?为什么要学它?

 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。

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

    其实就是我们服务器和客户端浏览器传输数据时的一种协议,你可以把它理解为计算机世界里面的一种规则,我们必须去遵守它。

    我们为什么要去学习它呢?这就有点废话了,我们遵守规则的前提是我们得了解这个规则,并且HTTP是Javaweb开发的基础,每一个请求和响应都是web开发最基本的操作,当我们学习web开发的时候,不去学http协议,我们会“打拳不练功,到老一场空”,当我们在web开发懵B的时候还不如好好的去学习http协议,不然花费在懵逼路上的时间比学http协议多得多。

3

HTTP的原理、作用、特点

原理:

HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。

Web服务器根据接收到的请求后,向客户端发送响应信息。

HTTP默认端口号为80,但是你也可以改为8080或者其他端口。

作用:

       它能够使浏览器和客户端浏览器之间更加高效的传输数据,它不仅保证计算机正确快速的传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先展示(如文本先于图像)等。

特点:

       基于请求-响应模型,先有请求后有响应,如图:


4

HTTP的请求


    HTTP请求协议包括:请求行,请求头,请求体

    HTTP响应协议包括:响应行,响应头,响应体

那么什么是HTTP请求呢?

       当客户端连接上服务器后,向服务器请求某个web资源时,称之为客户端向服务器发送了一个http请求。

       请求包括一个请求行、若干个请求头、以及请求体内容,请求头和请求体内容之间要用空行隔开。

格式如下图(图来自网络,侵权必删):

例如下面就是一个get请求:

GET /hello.txt HTTP/1.1

User-Agent: curl/7.16.3libcurl/7.16.3OpenSSL/0.9.7lzlib/1.2.3

Host: www.example.com

Accept-Language: en, mi

5

HTTP请求方式有哪几种?

在开发中常见的请求方式有POST,GET,DELETE,PUT,我们主要讲一讲GET和POST。

   1.GET请求:向服务器特定的资源发出查询请求,一般是用于查询数据或者资源的请求中。

GET请求有几个特点

get请求查询的参数是可以在浏览器的地址栏中查看到的

请求的数据会附带在url之后,以?分割URL和传输数据,多个参数之间用&连接

例如:GET /get.html?name=jap&password=123 HTTP/1.1

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

   POST的特点:

   post请求的数据会放置在HTTP请求体中

   例如:POST /post.html HTTP/1.1

            数据 name=jap&password=123放在请求中了

 3.两者的区别:在HTTP规范中,没有对URL的长度和传输的数据大小进行大小的限制,但是在实际的开发中,对于GET请求,特定的浏览器和服务器对URL的长度有限制。因此在使用GET请求时,会受到长度的限制

6

什么是请求头,请求体?

请求头用于描述客户端请求哪台主机,以及客户端的一些基本环境信息等,请求头是以键值对的方式来传递数据

如下面:

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*;q=0.8 

Accept-Encoding:gzip, deflate, br

Accept-Language:zh-CN,zh;q=0.9

Cache-Control:max-age=0

Connection:keep-alive

Cookie:BIDUPSID=9D9C53E416CD7FF75D06ECDD54E96CBB; PSTM=1543042511; BD_UPN=12314753; __cfduid=d7051da25724d1e9caf4c4f142767136e1547043423; MCITY=-43%3A; ispeed_lsm=0; 

Host:www.baidu.com

Upgrade-Insecure-Requests:1

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

请求体代表着浏览器在post请求方式中传递给服务器的参数,请求体中的每一个数据都是采用键值对的形式,多个参数用&连接,另外服务器在接收到请求体后会单独对其解析。

7

HTTP的响应

一个HTTP响应代表服务器向客户端回送的数据,它包括一个响应行,若干个响应头,以及响应体,其中的一些响应头和响应体都是可选的,响应头和响应体内容之间需要用空行隔开。

响应头用于描述服务器的基本信息,以及数据的描述,通过这些数据的描述,可以通知客户端怎么处理它待会回送的数据

例如下面就是一个响应头:

HTTP/1.1 200 OK

Date: Mon, 27 Jul 2019 12:28:53 GMT

Server: Apache

Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT

ETag: "34aa387-d-1568eb00"

Accept-Ranges: bytes

Content-Length: 51

Vary: Accept-Encoding

Content-Type: text/plain

响应行中包含了HTTP协议的版本,以及用于描述服务器对请求的处理结果

例如    HTTP/1.1  200  OK

           协议/版本  状态码   状态码描述

 这里来补充一下状态码:它是服务器和浏览器之间确定状态的固定数字(200:请求成功,302:请求重定向,404:请求资源不存在,500:服务器内部发生错误)

响应体代表着服务器向客户端浏览器回送的正文

例如:

<!DOCTYPE html>

<!--STATUS OK-->

HTTP_百度搜索

省略...

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • http协议有http0.9,http1.0,http1.1和http2三个版本,但是现在浏览器使用的是htt...
    一现_阅读 5,916评论 0 3
  • 前言:最近发现自己在网络相关这一块基础很是欠缺,所以准备花时间了解一下,本文主要是讲http协议的一些基础,和一些...
    justCode_阅读 6,303评论 0 23
  • 本文整理自MIN飞翔博客 [1] 1. 概念 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或...
    HoyaWhite阅读 7,616评论 2 20
  • 深入浅出HTTP协议(WEB开发和面试必备) 1.基础概念篇 a.简介 HTTP是Hyper Text Trans...
    半世韶华忆阑珊阅读 5,052评论 0 7
  • [原创]精彩每一天 今天是国庆大假第三天,早上下起了大雨,今天就呆在家吧!上午我和女儿一起画画,涂色,也是乐趣多多...
    且行且珍惜_0721阅读 1,445评论 0 0

友情链接更多精彩内容