问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

一文理清Request和Response

发布网友 发布时间:1小时前

我来回答

1个回答

热心网友 时间:2024-10-23 03:37

web服务器收到客户端的HTTP请求,会针对每一次请求分别创建一个用于代表请求的request对象和代表响应的response对象。


首先回顾一下请求报文的结构。request就是将请求报文封装而成的对象,所以通过request能获得请求文本中的所有内容,包括请求头、请求体、请求行。


request的函数大概可以分为以下三类,具体可以参看官网解释。request对象同时也是一个域对象,我们可以使用request来传输数据。request域对象不像Servlet域一样一直能使用,request只能在一次请求过程之中传递数据,请求结束即自动销毁。具体使用涉及到以下三个方法。


在获取请求报文相关的内容的时候,有时候我们会发现获取到的内容是乱码的内容。通常情况是浏览器向服务器发送的请求参数中包含中文字符,服务器获取到的请求参数的值是乱码。浏览器向服务器发送请求,因为浏览器与服务器之间的通信实质上是socket流,所以要先将请求参数(字符)转换成字节,也就是编码过程,服务器接收到请求参数后进行解码(字节转字符),然后封装到request对象中。如果客户端的编码与服务器端的解码不统一,就会导致通过request获取到的请求参数的值是乱码。所以为了解决request乱码的问题,我们只需要在服务器端设置相应的解码格式即可。具体设置代码如下:


什么是请求转发呢?一个形象的类比就是我去问辅导员借钱,但是辅导员因为工资还没有发下来,他也没钱,他就去找了另外一个老师借钱来给我。例子中我就可以理解为浏览器,借钱这个行为就相当于发送request,辅导员就可以理解为第一次请求的地址,辅导员直接帮我去借了钱,而不是让我自己再去找另外一个老师借钱,就可以理解为第一次请求的地址直接把我的请求转发到了同一个系统内的其他地址,这就是请求转发。请求转发的图示如下:


可以看到,请求转发实际上是一次请求,所以地址栏不会发生变化。具体实现方式:


在平时的使用当中,我们会发现下载文件的时候会有一个下载地址,有的人直接将这个地址复制到其他地方,然后贴上下载,就盗取了别人的资源,这种白嫖行为我们就称之为盗链。我们可以利用request来防范这种白嫖行为,我们只需要在下载页面做下简单的来源判断。如果不是来自本站的连接,则直接拒绝访问。这就是request的防盗链的运用,具体实现代码如下:


首先回顾一下响应报文的结构。Tomcat传给Servlet时,它还是空的对象。Servlet逻辑处理后得到结果,最终通过response.write()方法,将结果写入response内部的缓冲区。Tomcat会在servlet处理结束后,拿到response,遍历里面的信息,组装成HTTP响应发给客户端。HttpServletResponse对象代表服务器的响应。这个对象中封装了向客户端发送数据、发送响应头,发送响应状态码的方法。response的函数大概可以分为以下三类,具体可以参看官网解释。


有时候服务器向浏览器发送的数据包含中文字符,在 浏览器中显示的是乱码。乱码的原因是 response 对象的字符输出流在编码时采用的字符码表是 ISO-8859-1,该码表不兼容中文,所以就会出现乱码的问题。处理乱码问题,有下面两种方案:


方法一:


方法二:


什么是请求转发呢?同样的我们可以用借钱来类比一下。我去问辅导员借钱,但是辅导员因为工资还没有发下来,他也没钱,他就告诉我另外一个老师有钱,让我去找那个老师借。例子中我就可以理解为浏览器,借钱这个行为就相当于发送request,辅导员就可以理解为第一次请求的地址,辅导员告诉我去找另外一个老师借钱,就可以理解为第一次请求的响应中告诉了我去访问另外一个地址,然后我自己去找另外一个老师借,这就相当于浏览器发送第二次请求到第一个响应当中的地址,这就是重定向。当用户请求servlet时,服务器返回一个类似上面的响应头,上面的信息告诉浏览器,应该重新进行一次请求,请求的地址为 Header中的Location地址。重定向的图示如图所示:


可以看到,请求重定向实际上是两次请求,所以地址栏会发生变化。重定向有两种实现方式:


客户端有时候会请求某张图片的内容,我们需要将图片文件返回给客户端,一般来说使用Response传送图片的做法如下:


示例代码如下:


类似于传输图片,但是浏览器不能识别文件的名称和文件的类型,需要我们在响应头中设置文件的类型来告诉浏览器该文件的相关属性:


示例代码如下:


有时候我们想让用户端不缓存html,css,js等资源,我们可以通过对response头进行一定的设置来实现这样的功能,代码如下:


如果对这篇文章感兴趣,想学习更多的技术,也可以关注我的个人微信公众号。里面会不定期分享一些学习积累技术文章,同时也会有一些碎碎念的日常博文,笔芯!


参考文章:



本文由博客群发一文多发等运营工具平台 OpenWrite 发布

一文理清Request和Response

首先回顾一下请求报文的结构。request就是将请求报文封装而成的对象,所以通过request能获得请求文本中的所有内容,包括请求头、请求体、请求行。request的函数大概可以分为以下三类,具体可以参看官网解释。request对象同时也是一个域对象,我们可以使用request来传输数据。request域对象不像Servlet域一样一直能使...

Node.js的Web框架的3个层次,理清了就不迷茫

app.get('/list',function(req,res){//...})app.post('/save',function(req,res){//...})提供了更好用的request和responseapi:比如req.params获取请求参数 app.get('/user/:id',function(req,res){res.send('user'+req.params.id)})res.download返回下载的响应 res.download('/report-...

asp生成xml高手请进

foolcat = "<?xml version=""1.0"" encoding=""utf-8"" standalone=""yes""?>"+vbcrlf foolcat = foolcat + "<content>"+vbcrlf call wlxmlsub1()foolcat = foolcat + "</content>" + vbcrlf > < '--- '读取文件 ReadTxtFile(FileName)'--- Function ReadTxtFile(FileName)Di...

华南理工清清文理楼 华南理工大学清清文理楼设计者 肺部ct文理不清晰 文理清顺是什么意思 甲状腺文理不清 肺部文理不清楚 右肺少许文理不清是什么回事 肺部CT查出文理不清怎么治疗 文科和理科的区别
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
文件密使无法恢复解密,请高手帮忙 加密文件打不开了,请教高手..急需用那些文件 跪求电脑高手帮忙解决文件加密问题,我把所有积分给他。 我的优盘是联想的,用自带的加密软件加密后,忘了密码,请教高手,怎么解密... pe pb是什么 抱着柴火去火跟前猜谜语 关于租用办公室房产税如何计算与缴纳的问题 一个人抱着柴火前方是火是打一成语的谜语 ...前男友跟别的女人抱一起的时候,放的背景纯音乐出自哪里 ...从前男友家出来后被阿苏接上车,在车上的背景音乐是什么,在哪里有下... 2017款 New MacBook 使用体验 应县火车站能买太原站到子长站的票吗? 能跟应县买从大同到阳泉的火车票吗? 应县到晋中二等座多少钱? 买包头火车票改签应县火车票能不能?快速问铁路客 ...引用的"0x00000643"内存。该内存不能为"read" 怎么办 应县有固定取火车票的地方吗? ...一不小心把时钟图标删除了。但是开发版的不知道桌面图标在哪... 应县现在还有火车票代售点吗? 我有2个问题要向大神们指教指教。。1..如果自制的51单片机开发版... 谢敦毅艺术事件简评 高分悬赏,答对有奖!!!急!!! 宏碁4930G731G16MN-2装win7系统的耳麦问题? 宏基4930g改装win7QQ视频图像倒着怎么办 宏基4930G装了WIN7后摄像头画面翻转了180度,怎么调回来啊 石家庄信息工程职业学院与江苏财经职业技术学院哪个好 河北青年管理干部学院 跟 石家庄财经职业学院 这两个学校相对来说哪个好... ...石家庄财经职业学院录取吗?这所学校的校风怎么样?哪些专业较为突出... IPad3可以玩热血传奇手游吗? 太平人寿金生恒赢年金险分红型全面测评!?收益高不高呢? ...盒质量相同,另有一盒少了几块如果用天平称至少 OpenFeign远程调用丢失请求头问题以及异步调用丢失上下文问题 ...要开多大声?会不会被引擎声盖掉?埃文塔多LP700-4! 小区要安装5000伏箱式变压器工程费用多少? 诛仙2之时光之书 150仙合欢最佳打架技能组合 详细点 分不是问题_百度知... 诛仙2现在时光之书版本的,飞升后什么职业挂洞高效率 ...连续几年都没交钱的话,那么丢了之后可以补办吗?需要交以前没交的... 诛仙2 焚香飞升 ...因为社保卡不见了所以3年来没交社保过,现在想补办回来吗?需要什么材 ... 唐诗讲究平仄,但到了今天的普通话,读音声调难道没有发生很大变化吗? 兰博基尼小牛16年款真的是赛道车吗? [贵阳] 询问瑞金路上一家电脑城 ...有卖数码产品的,比较靠谱的大商店啊,贵阳的电脑城在哪里- - 从花溪... 电脑笔记本 这个配置玩坦克世界怎么样 。会不会很卡啊? 喜欢的女孩儿追了一年了,现在她终于答应做我女朋友了。。 追一个自己喜欢的女孩,通过2个月的努力她终于答应了和我在一起。但是... ...请进...我现在喜欢一个女生,我追了1年,终于她答应给我机会了,下一... 最爱的女孩终于接受了我,可是我已经有了女朋友,该怎么办? 你是哪个区的?破血项链野兽项链单卖吗?我想空降去买 近卫空降兵第6师近卫空降兵第6师