首页 > 其他分享 >day 04 4.1web开发核心之http协议

day 04 4.1web开发核心之http协议

时间:2023-04-20 16:59:05浏览次数:44  
标签:web HTTP 请求 04 协议 服务器 4.1 浏览器 客户端

web开发核心之http协议

  • http协议
1. 什么是请求头请求体,响应头响应体
2. URL地址包括什么
3. get请求和post请求到底是什么
4. Content-Type是什么

【一】简介

  • HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于万维网(WWW:World Wide Web )服务器与本地浏览器之间传输超文本的传送协议

    • 超文本:超文本就是指“含有指向其他资源链接”内容的文本。

      • 大概就是,不仅仅是文字,还有多媒体:视频、图片、动画等。
    • 协议:HTTP协议就是服务器(Server)和客户端(Client)之间进行数据交互(相互传输数据)的一种协议。

      • 我们可以将Server和Client进行拟人化,那么该协议就是Server和Client这两兄弟间指定的一种交互沟通方式。
  • HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。

    • 它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。
    • HTTP协议工作于客户端-服务端架构为上。
      • 浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
      • Web服务器根据接收到的请求后,向客户端发送响应信息。

【二】http协议特性

【2.1】 基于TCP/IP协议

  • http协议是基于TCP/IP协议之上的应用层协议。

【2.2】基于请求-响应模式

  • HTTP协议规定,请求从客户端发出,最后服务器端响应该请求并返回。
  • 换句话说,肯定是先从客户端开始建立通信的,服务器端在没有接收到请求之前不会发送响应

【2.3】 无连接

  • 无连接的含义是限制每次连接只处理一个请求。
    • 服务器处理完客户的请求,并收到客户的应答后,即断开连接。
    • 采用这种方式可以节省传输时间。
    • 请思考:
      • 双11淘宝平台,一个小时的网站访问量就达到了2亿次,如果一个客户的请求连接耗时1s,那么淘宝是如何实现在一个小时内可以有2亿次的连接访问呢?

【2.4】 无状态保存

  • HTTP是一种不保存状态,即无状态(stateless)协议。
    • HTTP协议自身不对请求和响应之间的通信状态进行保存。
    • 也就是说在HTTP这个级别,协议对于发送过的请求或响应都不做持久化处理。
  • 使用HTTP协议,每当有新的请求发送时,就会有对应的新响应产生。
    • 协议本身并不保留之前一切的请求或响应报文的信息。
    • 这是为了更快地处理大量事务,确保协议的可伸缩性,而特意把HTTP协议设计成如此简单的。

【2.5】 短连接和长连接

  • HTTP1.0默认使用的是短连接。浏览器和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。
  • HTTP/1.1起,默认使用长连接。要使用长连接,客户端和服务器的HTTP首部的Connection都要设置为keep-alive,才能支持长连接。
  • HTTP长连接,指的是复用TCP连接。多个HTTP请求可以复用同一个TCP连接,这就节省了TCP连接建立和断开的5消耗。

【三】http请求协议与响应协议

【3.1】请求协议

  • http协议包含由浏览器发送数据到服务器需要遵循的请求协议与服务器发送数据到浏览器需要遵循的请求协议。
  • 用于HTTP协议交互的信被为HTTP报文。
    • 请求端(客户端)的HTTP报文 做请求报文,
    • 响应端(服务器端)的 做响应报文。
    • HTTP报文本身是由多行数据构成的字文本。

一个完整的URL包括:协议、ip、端口、路径、参数

例如: https://www.baidu.com/s?wd=yuan 其中https是协议,www.baidu.com 是IP,端口默认80,/s是路径,参数是wd=yuan

请求方式: get与post请求

  • GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditBook?name=test1&id=123456.
  • POST方法是把提交的数据放在HTTP包的请求体中.
  • GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制,且携带的请求数据不可以明文方式连接在url中。

响应状态码:状态码的职 是当客户端向服务器端发送请求时, 返回的请求 结果。借助状态码,用户可以知道服务器端是正常 理了请求,还是出 现了 。状态码如200 OK,以3位数字和原因组成。

  • 请求头:

    • 请求头中存储的是该请求的一些主要说明(自我介绍)。服务器据此获取客户端的信息。

    • accept:浏览器通过这个头告诉服务器,它所支持的数据类型
      Accept-Charset: 浏览器通过这个头告诉服务器,它支持哪种字符集
      Accept-Encoding:浏览器通过这个头告诉服务器,支持的压缩格式
      Accept-Language:浏览器通过这个头告诉服务器,它的语言环境
      Host:浏览器通过这个头告诉服务器,想访问哪台主机
      If-Modified-Since: 浏览器通过这个头告诉服务器,缓存数据的时间
      Referer:浏览器通过这个头告诉服务器,客户机是哪个页面来的 防盗链
      X-Requested-With: XMLHttpRequest 代表通过ajax方式进行访问
      User-Agent:请求载体的身份标识
      
  • 报文体:

    • 常被叫做请求体,请求体中存储的是将要传输/发送给服务器的数据信息。

【3.2】响应协议

  • 响应头:

    • 响应头中存储的是该响应的一些主要说明(自我介绍)。客户端据此获取服务器的相关信息。
  • Location: 服务器通过这个头,来告诉浏览器跳到哪里
    Server:服务器通过这个头,告诉浏览器服务器的型号
    Content-Encoding:服务器通过这个头,告诉浏览器,数据的压缩格式
    Content-Length: 服务器通过这个头,告诉浏览器回送数据的长度
    Content-Language: 服务器通过这个头,告诉浏览器语言环境
    Content-Type:服务器通过这个头,告诉浏览器回送数据的类型
    Refresh:服务器通过这个头,告诉浏览器定时刷新
    Content-Disposition: 服务器通过这个头,告诉浏览器以下载方式打数据
    Transfer-Encoding:服务器通过这个头,告诉浏览器数据是以分块方式回送的
    Expires: -1 控制浏览器不要缓存
    Cache-Control: no-cache
    Pragma: no-cache
    
  • 响应体:

    • 根据客户端指定的请求信息,发送给客户端的指定数据
  • 响应状态码:

    • 状态码指的是是当客户端向服务器端发送请求时, 返回的请求结果。借助状态码,用户可以知道服务器端是正常受理了请求,还是出现了什么问题错误 。

【2】最简单的web应用程序

import socket

sock = socket.socket()
sock.bind(("127.0.0.1", 7777))
sock.listen(3)

print("京东服务器已经启动...")
while 1:
    conn, addr = sock.accept()
    data = conn.recv(1024)
    print("data:", data)
    conn.send(
        b"HTTP/1.1 200 ok\r\ncontent-type:text/plain\r\n\r\n<h1>alex black girl!</h1><img "
        b"src='https://img0.baidu.com/it/u=4011424408,4733765&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=750'>")
    conn.close()

基于postman完成测试!

标签:web,HTTP,请求,04,协议,服务器,4.1,浏览器,客户端
From: https://www.cnblogs.com/dream-ze/p/17337378.html

相关文章

  • Web应用程序简介
    Web应用程序是一种特殊类型的软件程序,运行在Web浏览器上。它们通常用于处理各种任务,例如在线购物、社交媒体、在线支付、博客、邮件、在线搜索、即时通讯等等。Web应用程序主要由两部分组成:前端和后端。前端通常是指用户直接与之交互的部分,它由HTML、CSS和JavaScript等技术构成,可......
  • Integer Inquiry hdoj 1047
    IntegerInquiryTimeLimit:2000/1000MS(Java/Others)    MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):15216    AcceptedSubmission(s):3909ProblemDescriptionOneofthefirstusersofBIT'snewsupercomputerwasChipDill......
  • 5 04 | 深入浅出索引(上)
    提到数据库索引,我想你并不陌生,在日常工作中会经常接触到。比如某一个SQL查询比较慢,分析完原因之后,你可能就会说“给某个字段加个索引吧”之类的解决方案。但到底什么是索引,索引又是如何工作的呢?今天就让我们一起来聊聊这个话题吧。数据库索引的内容比较多,我分成了上下两篇文章。......
  • 04-如何让一个元素水平垂直居中?
    title:04-如何让一个元素水平垂直居中?publish:true前言老板的手机收到一个红包,为什么红包没居中?如何让一个子元素在父容器里水平垂直居中?这个问题必考,在实战开发中,也应用得非常多。你也许能顺手写出好几种实现方法。但大部分人的写法不够规范,经不起千锤百炼。换句话说:这......
  • 14-CSS3属性详解:Web字体
    title:14-CSS3属性详解:Web字体publish:true前言开发人员可以为自已的网页指定特殊的字体(将指定字体提前下载到站点中),无需考虑用户电脑上是否安装了此特殊字体。从此,把特殊字体处理成图片的方式便成为了过去。支持程度比较好,甚至IE低版本的浏览器也能支持。字体的常见格......
  • WebStorm的使用
    WebStorm的简单设置1、主题修改:可能大家会觉得软件的界面不太好看,我们可以换一下主题。选择菜单栏“File--settings--appearance--theme”,主题选择Dracula:2、导入第三方主题:系统提供的两种主题可能都不太好看,我们可以进入网站http://color-themes.com/来获取第三方主题,这里......
  • 01-认识Web和Web标准
    title:01-认识Web和Web标准publish:trueWeb、网页、浏览器WebWeb(WorldWideWeb)即全球广域网,也称为万维网。我们常说的Web端就是网页端。网页网页是构成网站的基本元素。网页主要由文字、图像和超链接等元素构成。当然,除了这些元素,网页中还可以包含音频、视频以及Flash......
  • 04-HTML标签:排版标签
    title:04-HTML标签:排版标签publish:true本文主要内容排版标签:<h1><p><hr/><br/><div><span><center><pre>下面来详细介绍一下排版标签。标题标签标题使用<h1>至<h6>标签进行定义。<h1>定义最大的标题,<h6>定义最小的标题......
  • C# Web实现文件上传下载功能实例解析
    ​IE的自带下载功能中没有断点续传功能,要实现断点续传功能,需要用到HTTP协议中鲜为人知的几个响应头和请求头。 一. 两个必要响应头Accept-Ranges、ETag        客户端每次提交下载请求时,服务端都要添加这两个响应头,以保证客户端和服务端将此下载识别为可以断点续传......
  • webservice 客户端生成命令
    wsdl2java-frontendjaxws21-client-pcom.creditease.webapp.webservice.voices-dd:/http://10.105.48.14:8893/Service.svc?wsdlwsdl2java-frontendjaxws21-client-pcom.creditease.webapp.webservice.voices-dd:/http://10.105.48.14:......