【JavaEE】_HTTP请求报头header

目录

1. Host

2. Content-Length与Content-Type

2.1 Content-Length

2.2 Content-Type

3. User-Agent(UA)

4. Referer

5. Cookie


header的整体格式是“键值对”结构,一行是一个键值对,这些键值对都是HTTP定义好的、有特殊含义的。

常见的报头种类有:

1. Host

Host表示访问的服务器主机的地址与端口号(端口号可省略),或域名:

在此例中,首行中的URL与Host的信息是一致的,但也有可能不一致,

如在使用代理的情况下,Host的内容可能与URL的内容不一致;

2. Content-Length与Content-Type

只有当请求里有body部分才会有这两个属性,通常情况下GET请求没有body,POST请求有body

2.1 Content-Length

Content-Length描述的是body中数据的长度

注:前文TCP一文中已经描述过TCP传输过程中的粘包问题,原文链接如下:

【JavaEE】_传输层协议UDP与TCP-CSDN博客

HTTP在传输层是基于TCP实现的,当使用同一个TCP链接传输多个HTTP数据包时就会使得多个HTTP数据包在TCP接收缓冲区中挨在一起,接收方解析是需要明确HTTP数据包之间的边界:

对于GET(没有body)的请求,直接使用空行作为分隔符进行区分;

对于POST(有body)的请求,就需要结合空行和Content-Length进行区分

2.2 Content-Type

Content-Type描述的是body中数据的格式

在请求的body部分中可以选择的方式是非常多的,

请求中常见的格式有:json,form表单,form-data等格式

如json格式:

响应中常见的格式有:html,css,js,json,图片等等;

如html格式:

再如css格式:

再如js格式:

注:对于提交给服务器不同Content-Type的请求,服务器处理数据的逻辑是不同的;

同理,服务器返回给浏览器的数据,也需要设置合适的Content-Type,浏览器也会根据不同的Content-Type做出不同的处理;

3. User-Agent(UA)

以访问QQ邮箱网页版为例,请求如下:

UA描述了当前访问因特网的设备情况:包括操作系统的版本浏览器的版本

注:早期设置UA是为了区别新旧版本浏览器从而对不同版本的浏览器设置不同的响应格式,以保证新旧版本浏览器都能得到兼容。

而当今的浏览器之间的差距很小,此时UA的作用主要是用于区分PC端或移动端,一般这样的区别只是为了进行统计,而不会返回不同版本的页面,现在的前端开发有“响应式网页”的编程技术,以实现同一个html兼容不同的设备;

4. Referer

Referer用于描述当前页面是从哪个页面跳转来的

如果直接在地址栏输入URL或点击收藏夹中的按钮,这种请求都是没有Referer的

比如访问sogou.com后,搜索CSS,抓包请求如下:

5. Cookie

Cookie可以认为是浏览器在本地存储数据的机制

1. 浏览器的数据来自于服务器,服务器这边管理了一个网站的核心数据,但是在程序运行过程中也会有需要在浏览器这边存储一些数据,如上次登录时间、上次访问时间、用户身份信息、累计访问次数等临时性的数据。Cookie最终会返回给服务器,后续再请求这个服务器时,就会把Cookie中的内容自动带入到请求中,发送给服务器,服务器通过Cookie的内容进行一些逻辑的处理。

2. 浏览器为了考虑安全性,禁止网页直接访问用户的电脑文件系统网页代码无法直接生成一个硬盘的文件来存储数据,故而直接将数据存储到本地文件中是不可行的。

3. Cookie其实也是按照硬盘文件的方式保存的,但是浏览器对操作文件进行了封装,网页只能往Cookie中存储键值对(简单的字符串)

4. Cookie往往是从服务器返回的,或是页面自己生成的数据,Cookie是存储在浏览器所在的主机的硬盘上的,并且是按照域名为维度进行存储的,每个域名下可以存储各自的Cookie,彼此之间互不影响;

5. Cookie是按照键值对形式组织的,键与值之间用 ; 分隔,且键值对也是程序员自定义的;

6. 查看浏览器Cookie的方法:

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

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

相关文章

输入捕获模式测频率PWM输入模式(PWMI)测占空比

一、概念介绍 输出比较: 比较电路输入的CNT、CCR大小关系 ,在通道引脚输出高低电平 二、*频率知识、测量方法补充 * N/fc得到标准频率的时长,也就是待测频率的周期 测频法代码实现:修改对射式红外传感器计次(上升沿…

怎样让MCU/SFU视频会议ovmedia 接入GB28281监控视频参会互动

在国内视频应用对GB监控接入是常规操作,很多系统需要接入监控视频交互处理。我们以ovmedia视频会议为例做一个接入互动。 GB28181协议在流媒体系统较为普及,我们以开源SRS系统对接监控端再接入会议(也可以用商用GB流平台,操作基本…

Open CASCADE学习|分割

目录 1、添加头文件与源文件 GEOMAlgo_Splitter.h GEOMAlgo_Splitter.cpp 2、测试 2.1平面分割立方体 2.2以边分面 2.3以面分面 1、添加头文件与源文件 GEOMAlgo_Splitter.h // Copyright (C) 2007-2019 CEA/DEN, EDF R&D, OPEN CASCADE//// Copyright (C) 2003-2…

【大厂AI课学习笔记】【2.1 人工智能项目开发规划与目标】(4)数据准备的流程

今天学习的是数据准备的流程。 我们已经知道,数据准备占了AI项目超过一半甚至79%的时间。 那么数据准备,都做些什么,有哪些流程。 1.数据采集 观测数据人工收集调查问卷线上数据库 2.数据清洗 有缺失的数据有重复的数据有内容错误的数据…

51单片机编程应用(C语言):DS1302实时时钟

单片机计时的缺陷: 1.他的精度不高,没有时钟芯片精度高, 2.会占用单片机CPU的时间, 3.单片机的时钟无法掉电继续运行,(最大的缺点) DS1302芯片内部有备用电池,可以掉电继续计时…

fusion360 操作总结(不断更新)

平移缩放旋转快捷键 画布选择Windows 组合键macOS 组合键平移按住鼠标中键按住鼠标中键缩放滚动鼠标中键滚动鼠标中键动态观察旋转按住 Shift 键并按住鼠标中键按住 Shift 键并按住鼠标中键绕点动态观察按住 Shift 键单击并按住鼠标中键按住 Shift 键单击并按住鼠标中键撤消Ct…

MCU看门狗

目录 一、独立看门狗(IWDG) 1、IWDG 主要作用 2、IWDG 主要特性 3、编程控制 4、注意地方 二、窗口看门狗(WWDG) 1、窗口看门狗作用: 2、窗口看门狗产生复位信号有两个条件: 3、WWDG 框图 4、WWDG 将要复位的时间 5、编程控制 一、独立看门…

STL:优先级队列的实现

STL中优先级队列本质上就是堆。在上一篇博客中讲到过:堆是一种完全二叉树,逻辑结构上看起来像树,但在物理结构中是存储在线性表中。与普通线性表不同的是,堆中数据大小是规律排列的:小堆中每个节点都大于它的父节点&am…

SpringBoot实战:打造企业资产管理系统

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

001kafka源码项目gradle报错UnsupportedClassVersionError-kafka-报错-大数据学习

1 报错提示 java.lang.UnsupportedClassVersionError: org/eclipse/jgit/lib/AnyObjectId has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0 如…

Linux线程(1)--线程的概念 | 线程控制

目录 前置知识 线程的概念 Linux中对线程的理解 重新定义进程与线程 重谈地址空间 线程的优缺点 线程的优点 线程的缺点 线程异常 线程的用途 Linux线程 VS 进程 线程控制 创建线程 线程等待 线程终止 线程ID的深入理解 前置知识 我们知道一个进程有属于自己的P…

docker (六)-进阶篇-数据持久化最佳实践MySQL部署

容器的数据挂载通常指的是将宿主机(虚拟机或物理机)上的目录或文件挂载到容器内部 MySQL单节点安装 详情参考docker官网文档 1 创建对应的数据目录、日志目录、配置文件目录(参考二进制安装,需自己建立数据存储目录) mkdir -p /data/mysq…

计算机毕业设计springboot_vue房屋租赁系统_ku668

1.掌握Html,Css,JavaScript等基础编程语言。 2.掌握Vue框架,node环境,数据库等知识。 3.掌握开发系统的基本流程。 …

你了解API测试吗?如何充分的测试一个API?

什么是API? API代表应用程序接口。API是软件系统中的中间层,负责数据源与用户看到的图形用户界面(GUI)之间的数据通信。换句话说,API是软件的业务层,它在表示层和数据层之间创建连接。 API测试侧重于所谓的…

2.17C语言学习

P1678 烦恼的高考志愿 写完后发现题解里面用的是优先队列或者二分什么的,其实这个题可以贪心,我们把学校的分数线和学生的成绩分别进行排序,然后从前往后遍历,每次比较当前学校的分数与学生成绩的差距和下一个学校的分数与学生成…

re-captioning技术是什么

参考https://zhuanlan.zhihu.com/p/664192860 模型对图片进行caption操作时,输出的标题一般描述图片中的主体,而忽视了背景、常识关系等更为细节的描述。 图片比较重要的细节的描述应当包括: 物体存在的场景。如:在厨房的水槽&am…

Qt之条件变量QWaitCondition详解(从使用到原理分析全)

QWaitCondition内部实现结构图: 相关系列文章 C之Pimpl惯用法 目录 1.简介 2.示例 2.1.全局配置 2.2.生产者Producer 2.3.消费者Consumer 2.4.测试例子 3.原理分析 3.1.辅助函数CreateEvent 3.2.辅助函数WaitForSingleObject 3.3.QWaitConditionEvent …

阿里云服务器服务费怎么计算的?详细报价解析

2024年最新阿里云服务器租用费用优惠价格表,轻量2核2G3M带宽轻量服务器一年61元,折合5元1个月,新老用户同享99元一年服务器,2核4G5M服务器ECS优惠价199元一年,2核4G4M轻量服务器165元一年,2核4G服务器30元3…

001 - Hugo, 创建一个网站

001 - Hugo, 创建一个网站安装hugoWindows系统Macos Hugo博客搭建初始化博客主题安装配置博客各个页面开始创作创建 GitHub Page 仓库本地调试和预览发布内容 教程及鸣谢文字教程视频教程 001 - Hugo, 创建一个网站 这篇文章假设你已经: 了解基本的终端命令行知识&…

黑马鸿蒙教程学习1:Helloworld

今年打算粗略学习下鸿蒙开发,当作兴趣爱好,通过下华为那个鸿蒙开发认证, 发现黑马的课程不错,有视频和完整的代码和课件下载,装个devstudio就行了,建议32G内存。 今年的确是鸿蒙大爆发的一年呀,…