两种方式: 第一种,在配置文件里加入如下配置: spring: jackson: default-property-inclusion: non_null 第二种:在mvc配置文件里加入如下配置...MappingJackson2HttpMessageConverter) { it.objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL
客户端第一次向服务端发起针对某个资源的请求,服务端除了将资源数据作为回复消息主体返回之外,会将与资源关联并且能够可以用于对其进行对等性判断的某个值作为回复的ETag报头,这与条件获取时一致的。...而之前获取的ETag指将会作为请求消息的If-Match报头。 服务端接收到资源修改/删除请求后先获取到现有的资源的ETag值,并将此值与请求消息的If-Match报头值进行比较。...表示出栈请求上下文的OutgoingWebRequestContext类型具有如下一个IfMatch属性,客户端可以通过该属性对请求消息的If-Match报头进行设置。...Get操作在返回与指定员工ID匹配的Employee对象之前我们将该对象的哈希码作为了回复消息的ETag报头(Employee类型重写了GetHashCode方法)。...我们之前针对员工获取请求得到ETag报头和员工数据作为本次请求的If-Match报头和主体。
报头名称体现的含义如下:只有目标资源在指定的时间之后被修改(If-Modified-Since)或者目前资源的状态与提供的ETag不匹配(If-None-Match)的情况下才会返回资源的荷载内容。...针对资源自身内容生成的标签,则会以ETag响应报头的形式提供给客户端。反之,如果做出相反的判断,服务端就会返回一个状态码为“304 Not Modified”的响应,这个响应不包含主体内容。...如果客户端想确定目标文件是否被修改,但是希望在未被修改的情况下才返回目标文件的内容,这样的请求就需要使用If-Unmodified-Since报头和If-Match报头来承载基准时间戳与标签。...例如,对于如下两个请求携带的If-Unmodified-Since报头和If-Match报头,服务端都将做出文件尚未被修改的判断,所以文件的内容通过一个状态码为“200 OK”的响应返回。...If-Unmodified-Since报头或者If-Match报头体现的条件,那么返回的将是一个状态码为“412 Precondition Failed”的响应,如下所示的代码片段就是这样的请求报文和对应的响应报文
; lastModified = null; return false; } } GetPreconditionState方法旨在获取与条件请求相关的4个报头(If-Match...个选项,Unspecified表示请求中不包含这4个报头。...条件请求解析 如果目标文件当前的状态不满足If-Match报头或者If-Unmodified-Since报头表示的条件,那么检验结果对应的枚举值为PreconditionFailed;反之,对应的枚举值为...对于区间请求,TryGetRanges方法的返回值表示目标文件的当前状态是否与If-Range报头携带的条件相匹配。...我们将前两项工作实现在HttpContext如下所示的SetResponseHeaders扩展方法中。该方法不仅可以将指定的响应状态码应用到HttpContext上,还可以设置相应的响应报头。
,Unspecified表示请求中不包含这四个报头。...如果目标文件当前的状态不满足If-Match或者If-Unmodified-Since报头表示的条件,检验结果对应的枚举值为PreconditionFailed,反之对应的枚举值为ShouldProcess...为响应选择怎样的状态码,设置哪些报头,以及响应内容的选择除了决定于GetPreconditionState方法返回的条件检验结果外,与区间请求相关的两个报头(Range和If-Range)也是决定因素之一...由于HTTP规范并未限制Range报头中设置的区间数量,所以这个方法通过输出参数返回的区间信息是一个元素类型为RangeItemHeaderValue的集合。...我们将前两个工作实现在HttpContext如下这个扩展方法SetResponseHeaders中。该方法会我们指定的响应状态码应用到指定的HttpContext,并设置相应的响应报头。
Tomcat 如何对待"If-None-Match"等请求头的? 1. 【知乎】是怎么玩的? 1.1. 知乎 1.2. 京东 2. 缓存作用?...缓存是一种保存资源副本并在下次请求时直接使用该副本的技术。当 web 缓存发现请求的资源已经被存储,它会拦截请求,返回该资源的拷贝,而不会去源服务器重新下载。...Tomcat 如何对待"If-None-Match"等请求头的?...&& checkIfUnmodifiedSince(request, response, resource); } /** * Check if the if-match...(); String headerValue = request.getHeader("If-Match"); if (headerValue !
报头名称体现的意思是如果目标资源在指定的时间之后被修过(If-Modified-Since)或者目前资源的状态与提供ETag的不匹配(If-None-Match)才将目标资源的内容作为响应负载返回。...(If-Unmodified-Since)或者目标资源目前的ETag与提供的ETag匹配(If-Match)的请求下才将资源作为响应负载返回。...针对这样的请求,如果根据携带的这两个报头判断出目标资源并不曾发生变化,服务端会返回一个将资源内容作为主体的“200 OK”响应,这样的响应也会携带Last-Modified和If-Match报头。...比如对于如下两个请求携带的If-Unmidified-Since和If-Match报头,服务段都将作出文件尚未被修改的判断,所以文件的内容通过一个状态为“200 OK”的响应返回。 ...If-Unmidified-Since或者If-Match报头体现的条件,那么返回的将是一个状态为“412 Preconception Failed”的响应,如下所示的就是两条这样的请求和对应响应的内容
工作原理 http 协议中定义了一些请求/响应头,通过组合使用这些头信息,即可实现分批下载同一文件的目的。...例如,在一次 http 请求中只请求文件中的一部分数据,然后将请求到的数据保存起来,下次只需请求剩余部分的数据,当全部数据都下载到本地后再完成数据的合并工作。...举例说明,有一个1000 字节大小的文件需要下载,第一次请求时不指定 Range 头,表示下载整个文件;但在下载完第499个字节后,下载被中断了,那么在下一次请求剩余文件时,只需要下载第500个至第999...比较统一的做法是:当服务器不支持请求部分数据时,都会返回 Accept-Ranges: none,所以只需判断返回值是否等于 none 就可以了。...= null ) { return res.Headers["ETag"]; } return null; } 再看 Last-Modified: The Last-Modified
PS:比如常见的,客户端某些字段就是不填导致的业务流程Game Over。...所有头部值必须遵循在定义头部字段的规范中所阐述的语法规则(syntax rules )。在HTC721中定义了许多HTTP报头,但是在IANA报头注册表中可以找到完整的批准报头列表。...该报头可以包含在请求中,但在提供时必须以这种格式。当提供该报头时,必须使用格林尼治平均时间(GMT)作为时区参考。...Prefer | 返回=极小值 ,返回=代表事物 | 如果指定了返回=最小优先级,则服务应响应成功插入或更新返回空主体。如果指定了Reale=表示,服务应该返回响应中创建的或更新的资源。...在评估错误时,客户机必须遍历所有嵌套的“内部错误”,并选择他们理解的最深的一个。该方案允许服务在层次结构中的任何地方引入新的错误代码,而不破坏向后兼容性,只要仍然出现旧的错误代码。
Web认证信息 Expect 期待服务器的特定行为 From 用户的电子邮箱地址 Host 请求资源所在服务器 If-Match 比较实体标记(ETag) If-Modified-Since 比较资源的更新时间...If-None-Match 比较实体标记(与If-Match相反) If-Range 资源未更新时发送实体Byte的范围请求 If-Unmodified-Since 比较资源的更新时间(与If-Modified-Since...如果想要给显示的媒体类型增加优先级,则适用q=来额外表示权重值,权重值q的范围是0~1(可精确到小数点后3位),且1为最大值。不指定权重值时,默认权重为q=1.0。...请求头Host作用:请求报头域主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来。...HEAD 类似于GET请求,只不过返回的响应中没有具体内容,用于获取报头。经常用来测试一些超链接的有效性,是否能够用来访问,是否有更新,避免返回数据过大。 DELETE 请求服务器删除指定的资源。
发送请求的时间是2017-05-26 06:59:15,即永远不缓存,都从服务器获取数据。...Mar 2016 07:07:52 GMT 该请求首部告诉服务器如果客户端传来的最后修改时间与服务器上的一致,则直接回送304 和响应报头即可。...If-Match: ETag-value 告诉服务器如果没有匹配到ETag,或者收到了“*”值而当前并没有该资源实体,则应当返回412(Precondition Failed) 状态码给客户端。...If-Match 的一个应用场景是,客户端走PUT方法向服务端请求上传/更替资源,这时候可以通过 If-Match 传递资源的ETag。...,也不包含Cache-Control/Expires的请求无法被缓存 用户行为与缓存 浏览器缓存行为还有用户的行为有关!!!
3XX 重定向 3XX系列响应代码表明:客户端需要做些额外工作才能得到所需要的资源。它们通常用于GET请求。他们通常告诉客户端需要向另一个URI发送GET请求,才能得到所需的表示。...但我不推荐使用它。 这个响应代码市造成大多数重定向方面的混乱的最根本原因。它应该是像307那样被处理。...这样做的缺点是:客户端需要事先知道服务器接受哪种认证–这将导致HTTP摘要认证无法工作。 响应报头:WWW-Authenticate报头描述服务器将接受哪种认证。 实体主体:一个错误的描述文档。...请求报头:若客户但设置了If-Match,If-None-Match或If-Unmodified-Since报头,那就有可能得到这个响应代码。If-None-Match稍微特别一些。...此响应代码表明HTTP服务器正常,只是下层web服务服务不能正常工作。最可能的原因是资源不足:服务器突然收到太多请求,以至于无法全部处理。
哎哟有Response报头数据呢,看来服务器也正常返回了etag什么鬼的应有尽有,那状态200不是应该对应的非缓存状态么?要from cache的话不是应该返回304才合理么?...如上图红框部分是再次刷新页面时生成的请求,这说明禁用缓存生效,预计浏览器在收到服务器的Pragma字段后会对资源进行标记,禁用其缓存行为,进而后续每次刷新页面均能重新发出请求而不走缓存。 2....注意的是该方式仅仅作为知会IE缓存时间的标记,你并不能在请求或响应报文中找到Expires字段。 如果是在服务端报头返回Expires字段,则在任何浏览器中都能正确设置资源缓存的时间: ?...⑵ If-Match: ETag-value 告诉服务器如果没有匹配到ETag,或者收到了“*”值而当前并没有该资源实体,则应当返回412(Precondition Failed) 状态码给客户端。...If-Match 的一个应用场景是,客户端走PUT方法向服务端请求上传/更替资源,这时候可以通过 If-Match 传递资源的ETag。
目录 CORS是如何工作的? 对响应报头的授权 预检机制 是否支持用户凭证 一、CORS是如何工作的?...如果此响应报头不存在或者其值为“null”,客户端JavaScript程序针对资源的操作会被拒绝。...具有一个getResponseHeader方法,调用它会返回一组响应报头的列表。...预检请求为一个采用HTTP-OPTIONS方法的请求,这是一个不包含主体的请求,同时用户凭证相关的报头也会被剔除。基于真正资源请求的一些辅助授权的信息会包含在此预检请求的相应报头中。...如果预检请求没有通过授权检验,资源提供者一般会返回一个状态为“400, Bad Reuqest”的响应。反之则会返回一个状态为“200, OK”的响应,授权相关信息会包含在响应报头中。
If-Match = "If-Match" ":" ( "*" | 1#entity-tag ) 如果任何实体标记与在响应该资源上的类似GET请求(没有if-Match头字段)时返回的实体的实体标记相匹配...“if-Match:*”的含义是,如果源服务器(或缓存,可能使用变体机制,请参见14.44节)选择的内容存在,则应该执行该方法,如果内容不存在,则必须不执行该方法。 ...If-Range头字段应该只与Range头字段一起使用,如果请求不包含Range头字段,或者服务器不支持子范围操作,则必须忽略该报头。...如果实体标记不匹配,那么服务器应该使用200 (OK)响应返回整个实体。...如果请求的变体自指定时间以来已经被修改,服务器必须不执行请求的操作,并且必须返回412(Precondition Failed)状态。
实体报头既可以用于请求也可以用于响应中,如Content-Length,Content-Language,Content-Encoding之类的报头都是实体报头。...尽管实体报头既不是请求也不是响应报头,但是它经常出现在请求头或响应头中,所以还是把他们包含在一个概念里。...If-Match 比较实体标记(ETag);如果对象的 ETag 没有改变,其实也就意味著对象没有改变,才执行请求的动作。...If-None-Match 比较实体标记(与 If-Match 相反);如果对象的 ETag 改变了,其实也就意味著对象也改变了,才执行请求的动作。...Public-Key-Pins 包含该Web 服务器用来进行加密的 public key (公钥)信息; Public-Key-Pins-Report-Only 设置在公钥固定不匹配时,发送错误信息到report-uri
IP 和端口 IP是分配给网卡的地址,用来找到网络上的一台设备,实现相互通信。 IP的格式是四个8位的二进制整数,可以转换成0-255的十进制数字。 ...端口号,如果不写的话就是默认端口,比如HTTP的80端口,HTTPS的443端口。 后面就是资源路径和参数。 3.HTTP协议有什么特点? ...5.HTTP协议的请求类型有哪些? GET:请求指定的页面信息,并返回实体主体。 HEAD:类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头。...用户的电子邮箱地址 Host 请求资源所在服务器 If-Match 比较实体标记(ETag) If-Modified-Since 比较资源的更新时间 If-None-Match 比较实体标记(与...If-Match相反) If-Range 资源未更新时发送实, '本Byte的范围请求 If-Unmodified-Since 比较资源的更新时间(与If-Modified-Since相反) Max-Forwards
* 68 * @param string $name 不区分大小写的报头信息名称 69 * @return bool 找到返回 true,未找到返回 false 70 */...79 * 80 * @param string $name 不区分大小写的报头字段名称。...111 * @param string $name 不区分大小写的报头字段名称。...136 * 137 * 报头信息字段在解析的时候,**必须** 保证是不区分大小写的。...79 * 80 * 如果端口信息是与当前 Scheme 的标准端口不匹配的话,就使用整数值的格式返回,如果是一 81 * 样的话,**应该** 返回 `null` 值。
HEAD: 类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头 PUT: 从客户端向服务器传送的数据取代指定的文档的内容。 DELETE: 请求服务器删除指定的页面。...Email Host: 指定请求的服务器的域名和端口号 If-Match: HTTP请求报头使得所述请求为条件。...: XFF是用于通过HTTP代理或负载平衡器识别连接到web服务器的客户端的发起IP地址的事实上的标准报头。...X-Forwarded-Host: XFH是用于识别由客户机在所要求的原始主机一个事实上的标准报头Host的HTTP请求报头。...Gateway: 作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应 503 Service Unavailable: 由于超载或系统维护,服务器暂时的无法处理客户端的请求