【网络原理】HTTP|认识请求“报头“|Host|Content-Length|Content-Type|UA|Referer|Cookie

目录

认识请求"报头"(header)

Host

Content-Length

Content-Type

User-Agent(简称UA)

Referer

💡Cookie(最重要的一个header,开发&面试高频问题)

1.Cookie是啥?

2.Cookie怎么存的?

3.Cookie从哪里来?

4.Cookie到哪里去/Cookie的作用

5.Cookie的一个典型应用场景:保存会话id


💡推荐

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击跳转到网站】


认识请求"报头"(header)

header的整体的格式也是"键值对"结构.每个键值对占⼀⾏.键和值之间使⽤分号分割.报头的种类有很多,此处仅介绍⼏个关键的.

Host

请求对应的主机ip和端口

Host对应的ip(/域名)和URL中的ip/域名正常情况是相同的

但是也存在不相同的情况:比如你通过代码构造http请求,URL写的是ip地址,作为目标服务器,但是host写的仍然是域名,反爬虫的时候一般会这样写,这样可以跳过一些校验规则

爬虫要绕开对方的反向代理服务器,反向代理可以给出一些缓存数据,也可能会进行一些校验,但这些校验就可能挡住你的爬虫程序


Content-Length

表⽰body中的数据⻓度.

一旦有body就需要知道body到底有多长,才知道一个完整的http请求

这样可以很好的解决粘包问题:1)分隔符 2)长度

GET请求,没有body,通过空行可以区分哪段是http请求

POST请求,有body,通过空行找到body开始,通过Content-Length找到body的结束位置

Content-Type

表⽰请求的body中的数据格式(就类似文章的文体)

通过HTTP协议,传输的数据有很多种类,图片,视频,音频,字体,html...这些不同的数据,浏览器/服务器就有不同的处理方式,图片,浏览器要能够显示出来;html,要渲染成网页;css,要加载成html的样式

常⻅选项:

(1)application/x-www-form-urlencoded:通过html的form表单构造,此时body的格式形如:

title=test&content=hello

(2)multipart/form-data:也是通过form表单构造(在form标签中加上enctyped="multipart/form-data"),但是通常用于提交图片/文件,body格式形如:

Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryrGKCBY7qhFd3Trw------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="text"title
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="file"; filename="chrome.png"
Content-Type: image/pngPNG ... content of chrome.png ...
------WebKitFormBoundaryrGKCBY7qhFd3TrwA--

💡(3)application/json:数据为json格式.body格式形如:(后续开发中需要重点掌握的方式)

{"username":"123456789","password":"xxxx","code":"jw7l","uuid":"d110a05ccde64b16

User-Agent(简称UA)

表示浏览器/操作系统的属性,形如:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)

Mozilla:开源组织,这个组织的成员参与了HTML/CSS/JS等前端技术标准的制定

Windows NT 10.0; Win64; x64:表示操作系统的信息,Windows NT是操作系统的内核,10.0是win10,Win64; x64表示是64位操作系统

AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36:表示浏览器的信息(内核...)

UA里的信息主要是两个部分:1)浏览器版本 2)操作系统版本 

描述了用户,使用啥样的设备,打开你的网页

UA有啥用呢?

通过UA来实现“兼容”,作为网站的开发者,你的网站是否要包含图片?是否要包含视频?是否要包含js?开发者就可以根据UA判定用户的浏览器和系统是啥水平的,根据这里的版本信息,进行区分:如果是老版本,就只返回带文字的网页;如果是新版本,就返回各种功能都有的网页...

现在UA最主要的作用是用来区分当前的设备是电脑还是手机,如果是电脑,返回一个宽屏的网页;如果是手机,返回一个窄屏

可以用UA做区分,一些比较老的网站,是直接通过URL来区分的,使用UA区分不同的网页,意味着网站开发者就需要维护两套代码,因此程序员开发了一个新的技术“响应式布局”(前端),只写一套代码,这个代码能够根据你的设备尺寸(宽度),设置不同的样式,从而起到很好的适应各种设备的效果


Referer

表示当前的页面,从哪里跳转来的

如果是直接在地址栏输入URL/直接点击收藏夹中的网站,此时Referer就是空的

eg:广告投放时广告主可能有多个渠道投放,就需要能够区分,哪些请求是来自哪些渠道的,这就可以通过Referer来区分了. 但是也存在某个人把访问广告主服务器的请求的Referer给修改了,运营商(移动,电信,联通等..)完全有能力做这些,也就是“运营商劫持",为了从技术上进行”反制“,HTTPS就是重要的反制手段,HTTPS直接针对HTTP请求中的内容(包括这里的header进行加密),这里的加密就能够防止运营商进行篡改


💡Cookie(最重要的一个header,开发&面试高频问题)

1.Cookie是啥?

浏览器本地存储数据的一种机制(不是唯一的一种,只是典型的一种),现在的浏览器还有其他的方式也能本地持久化存储

Cookie中存储了⼀个字符串,键值对(这里的键值对本质上都是能够在客户端的硬盘上持久化保存的)格式的内容,和query string类似,都是程序员自定义的,这样程序员可以根据不同的需求,定义不同的数据,增加http的可拓展性

网页是运行在浏览器上的,默认情况下,一个网页不能直接访问用户的硬盘(直接操作很危险),但是有些网站确实需要在客户端这边存储一些必要的信息希望持久化存储(写到硬盘上,重启也还在),浏览器就给网页提供了特定的机制Cookie

Cookie机制不是让网页随意访问硬盘,网页对于你的硬盘没法直接读写,浏览器对于硬盘操作,做了特殊的封装,相当于提供了一个/一组特殊的文件,只能往这个特殊文件里写,并且你写的内容,也必须是键值对(键和值都得是文本)

2.Cookie怎么存的?

按照不同的域名,分别存储在硬盘上,不同的域名之间的Cookie互不干扰,键值对,存储文本,键值对都是用户自定义的

3.Cookie从哪里来?

服务器来,服务器的HTTP响应header中可以填写Set-Cookie字段,就会带有一些键值对

如果是一个新的浏览器,第一次访问某个网站,此时这个浏览器上对应的Cookie都是空着的,网站的服务器,就会返回一些HTTP响应...在这些HTTP响应中,就会包含Set-Cookie这样的header,就会把一些键值对,保存到浏览器的Cookie中

4.Cookie到哪里去/Cookie的作用

在后续请求中,通过HTTP请求的header中的Cookie字段,把信息传输给服务器,能够使客户端存储一些必要的“配置”等信息,从而让服务器提供更多的“个性化”的服务

eg:很多网站有主题,夜间模式/日间模式,我给这个网站设置了夜间模式,此时我关闭浏览器,过一会又打开,当然还是希望继续是夜间模式...形如上述的设置信息,必须是保存在我的浏览器里的,后续请求人家的网站,告诉服务器,我要日间/夜间...

5.Cookie的一个典型应用场景:保存会话id

Cookie中虽然很多键值对都是程序员自定义的,但是往往会有一个特殊的键值对,大部分网站都会有的key,用来标识用户的身份信息,也称为"令牌(token)",后续只要访问这个⽹站,就会⼀直带着这个令牌,直到令牌过期/下次重新登陆

eg:去医院不同的科室机械能就诊,都是提供就诊卡串起来的,就诊卡就只需要保存一个id即可,就诊卡中存储的id就称为id(sessionid)对应的,服务器上保存的,id以及相关的各种详细信息,就会称为会话(session)

这里的session从编程的角度:可以理解成一个类/对象,包含有哪些属性,方法,根据你的需求灵活存储的

将登陆的过程类比去医院就诊:

 (1) 到了医院先挂号.挂号时候需要提供⾝份证,同时得到了⼀张"就诊卡",这个就诊卡就相当于患者的"令牌".

(2)后续去各个科室进⾏检查,诊断,开药等操作,都不必再出⽰⾝份证了,只要凭就诊卡即可识别出当前患者的⾝份.

(3)看完病了之后,不想要就诊卡了,就可以注销这个卡.此时患者的⾝份和就诊卡的关联就销毁了.(类似于⽹站的注销操作)

(4)⼜来看病,可以办⼀张新的就诊卡,此时就得到了⼀个新的"令牌"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/845299.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

视频汇聚EasyCVR视频监控云平台对接GA/T 1400视图库对象和对象集合XMLSchema描述

GA/T 1400协议主要应用于公安系统的视频图像信息应用系统,如警务综合平台、治安防控系统、交通管理系统等。在城市的治安监控、交通管理、案件侦查等方面,GA/T 1400协议都发挥着重要作用。 以视频汇聚EasyCVR视频监控资源管理平台为例,该平台…

游戏逆向工具分析及解决方案

游戏逆向,是指通过各类工具对游戏进行反编译及源码分析,尝试分析游戏的实现逻辑的过程。这个过程需要使用解密、反编译、解压缩等技术,目的是还原或分析出游戏的代码逻辑及资源。 游戏逆向工具可以按照不同功能进行划分,如&#…

java微服在使用nacos注册中心时,ribbon负载均衡时给部分feign client使用静态serverList

我看很多贴子都是针对eureka环境下做静态ServerList配置,目前国内大部分都用Nacos,所以便研究了一下。 micore-service-x:ribbon:listOfServers: ip1:port,ip2:port2NIWSServerListClassName: com.netflix.loadbalancer.ConfigurationBasedServerList m…

Linux上传文件

在finalshell中连接的Linux系统中,输入命令rz然后选择windows中的文件即可。

数据结构算法 数组的实现与练习(C语言实现,Java实现)

文章目录 数据结构数组(顺序表)特点使用Java实现更高级的数组C语言实现总结优点缺点 例题[26. 删除有序数组中的重复项](https://leetcode.cn/problems/remove-duplicates-from-sorted-array/)[1. 两数之和](https://leetcode.cn/problems/two-sum/)[27. 移除元素](https://lee…

破解生产难题,这些中小汽配企业这样做

伴随着汽车新四化即智能化、网联化、电动化、共享化的趋势,国内汽车零部件行业在市场规模和发展速度上呈现高速增长。然而,在劳动力成本上升,原材料价格上涨,企业生产成本逐年增加的情境下,市场竞争越来越激烈,如何降本增效,还能构…

三十二篇:转化决策为行动:探索决策支持系统的深层价值

转化决策为行动:探索决策支持系统的深层价值 1. DSS的精髓:定义与核心功能 1.1 定义与作用 在现代商业的快速演变中,决策支持系统(Decision Support Systems, DSS)已成为企业获得竞争优势的重要工具。DSS是一种利用先…

【R语言基础】如何更新R版本

文章目录 概要流程细节具体步骤 概要 提示:由于软件包的更新,所以需要更新R至新版本 流程细节 查看当前R版本 R.version下载更新包:installr install.packages("installr")library(installr)跟着向导一步步执行安装 具体步骤 …

HTML5的标签(文本链接、图片路径详解)

目录 前言 一、文本链接 超链接表述 二、图片路径详解 绝对路径 相对路径 网络路径 前言 一、文本链接 超链接表述 HTML 使用标签<a>来设置超文本链接 超链接可以是一个字&#xff0c;一个词&#xff0c;或者一组词&#xff0c;也可以是一幅图像&#xff0c;…

本地电脑通过远程服务器进行ssh远程转发

☆ 问题描述 想要实现这样一个事情&#xff1a; 我想要提供一个ai服务&#xff0c;但是租计算服务器太贵了&#xff0c;我自己有配的台式机。那么用我的台式机作为服务器&#xff0c;租一个服务器做端口转发可行吗&#xff1f; ★ 解决方案 1. 修改服务器上的sshd_config文件…

如何格式化只读U盘?

U盘只读无法格式化&#xff0c;该怎么处理&#xff1f;别担心&#xff01;本文将向你提供一些实用方法&#xff0c;助你解决U盘写保护的难题。这些方法能有效帮助你解除U盘的只读状态&#xff0c;从而可以顺利进行格式化和其他操作。 不能格式化只读U盘 “我购买了一个U盘&…

vmware esxi虚拟化数据迁移

1、启用esxi的ssh 登录esxi的web界面&#xff0c;选择主机-》操作——》服务——》启动ssh 2.xshell登录esxi 3、找到虚拟机所在目录 blog.csdnimg.cn/direct/d57372536a4145f2bcc1189d02cc7da8.png)#### 3在传输数据前需关闭防火墙服务 查看防火墙状态&#xff1a;esxcli …

系统架构设计师【第8章】: 系统质量属性与架构评估 (核心总结)

文章目录 8.1 软件系统质量属性8.1.1 质量属性概念8.1.2 面向架构评估的质量属性8.1.3 质量属性场景描述 8.2 系统架构评估8.2.1 系统架构评估中的重要概念8.2.2 系统架构评估方法 8.3 ATAM方法架构评估实践8.3.1 阶段1—演示&#xff08;Presentation&#xff09;8.3…

卷积网络迁移学习:实现思想与TensorFlow实践

摘要&#xff1a;迁移学习是一种利用已有知识来改善新任务学习性能的方法。 在深度学习中&#xff0c;迁移学习通过迁移卷积网络&#xff08;CNN&#xff09;的预训练权重&#xff0c;实现了在新领域或任务上的高效学习。 下面我将详细介绍迁移学习的概念、实现思想&#xff0c…

堆排序详细理解

目录 一、前备知识 二、建堆 2.2.1 向上调整算法建堆 2.2.2 向下调整算法建堆 三、排序 3.1 常见问题 3.2 思路 3.3 源码 一、前备知识 详细图解请点击&#xff1a;二叉树的顺序实现-堆-CSDN博客 本文只附上向上/向下调整算法的源码 //交换 void Swap(int* p, int* …

发电机组故障的原因、解决方案及解决措施

发电机组故障的原因、解决方案及解决措施可以总结如下&#xff1a; 一、故障原因 供电中断 原因&#xff1a;电网故障、线路短路或电力负荷过重等。 燃油问题 原因&#xff1a;燃油供应系统问题&#xff0c;如燃油管路堵塞、燃油质量不佳等。 轴承过热 原因&#xff1a;轴承过…

TensorFlow Playground神经网络演示工具使用方法详解

在现代机器学习领域,神经网络无疑是一个重要的研究方向。然而,对于许多初学者来说,神经网络的概念和实际操作可能显得相当复杂。幸运的是,TensorFlow Playground 提供了一个交互式的在线工具,使得我们可以直观地理解和实验神经网络的基本原理。在这篇博客中,我们将详细介…

长虹智能电视55D3P(机芯:ZLH74GiR2G)海思平台固件解析打包

一、使用Hitool打包固件 接上一篇&#xff0c;尝试使用HITOOL打包固件 长虹55D3P海思平台固件破解-CSDN博客 参考ZNDS HItool备份固件&#xff1a;【玩机必看】海思机顶盒备份线刷包 制作分区表xml文件_ZNDS刷机/救砖_ZNDS HITOOL下载&#xff1a;https://cloud.189.cn/web/…

Visual Studio 2022创建dll并调用

需求&#xff1a; 创建A项目&#xff0c;有函数和类&#xff0c;将A项目生成DLL动态链接库 创建B项目&#xff0c;使用A项目生成的dll和lib相关文件 正常项目开发.h用于函数声明&#xff0c;.cpp用于函数实现&#xff0c;但是项目开发往往不喜欢将.cpp函数实现的代码发给别人&…

Elasticsearch 认证模拟题 - 5

一、题目 .在集群上有一个索引 food_ingredient&#xff0c;搜索需要满足以下要求&#xff1a; 三个字段 manufacturer&#xff0c;name&#xff0c;brand 都能匹配到文本 cake mix高亮 字段 name&#xff0c;并加标签排序&#xff0c;对字段 brand 正序&#xff0c;_score 降…