首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ASP.NET Core静态文件中间件: StaticFileMiddleware 中间件全解析

只有将另一个名为ServeUnknownFileTypes的属性设置True,中间件才会采用这个默认设置的媒体类型。...条件请求解析:获取与条件请求相关的4个报头(If-Match、If-None-Match、If-Modified-Since和If-Unmodified-Since)的,根据HTTP规范计算出最终的条件状态...如果将请求报头If-None-Match的与当前文件标签进行比较,或者将请求报头If-Modified-Since的与文件最后修改时间进行比较确定目标文件不曾被更新,检验结果对应的枚举NotModified...,反之则对应的枚举ShouldProcess。...条件请求解析 如果目标文件当前的状态不满足If-Match报头或者If-Unmodified-Since报头表示的条件,那么检验结果对应的枚举PreconditionFailed;反之,对应的枚举

1.5K21

路由控制、引入、策略

deny node [ID] #创建一个叫NAME的节点,设置节点的规则默认为放行/拒绝 节点[ID] [节点内]if-match ip address prefix-list/acl [rule-id...] [节点内]apply cost 100 [节点内]apply #进行节点判断,如果ip address匹配地址前缀列表[rule-id]的规则 #更改cost100 #打上一个20的tag route-polocy...[Name] deny/permit node [ID] #如果一个节点内没有任何子节点比如if-match等,就是节点,那么他默认匹配所有,不做任何处理, 路由策略的一些注意事项 route-policy...用于路由过滤,则不用配置节点 route-policy仅用于路由器属性的修改,则需要配置节点,来方向其他所有路由 关于route-policy能够配置的位置 IGP路由引入时 BGP路由宣告时 BGP...路由引入的方向 单向引入 双向引入 路由引入的问题 不同协议的度量值不同,引入后的cost默认重置1 ,不会保留原有cost 多边界双向引入会导致环路路由的形成,解决办法: 使用路由策略,引入的路由加上

70820
您找到你想要的搜索结果了吗?
是的
没有找到

MVC、MVP以及Model2

[源代码从这里下载] 一、HTTP条件更新的支持 HTTP条件更新提供了相应的报头,我们按照分析条件获取的方式来分析条件更新在HTTP请求/回复过程中的实现。...而之前获取的ETag指将会作为请求消息的If-Match报头。 服务端接收到资源修改/删除请求后先获取到现有的资源的ETag,并将此与请求消息的If-Match报头进行比较。...如果两者不一致,则表明试图被修改/删除的资源已经被修改了,在这种情况下会直接回复一个HTTP状态“412 (Precondition Failed)”的消息。...的请求,如果If-Match报头不为“*”,则直接抛出HTTP状态PreconditionFailed的WebFaultException异常;对于HTTP方法POST和DELETE的请求来说,如果...If-Match报头“*”或者包含指定的entityTag则验证通过,否则同样则直接抛出HTTP状态PreconditionFailed的WebFaultException异常。

49870

解决资源并发修改的一个有效的手段:条件更新(Conditional Update)

[源代码从这里下载] 一、HTTP条件更新的支持 HTTP条件更新提供了相应的报头,我们按照分析条件获取的方式来分析条件更新在HTTP请求/回复过程中的实现。...而之前获取的ETag指将会作为请求消息的If-Match报头。 服务端接收到资源修改/删除请求后先获取到现有的资源的ETag,并将此与请求消息的If-Match报头进行比较。...如果两者不一致,则表明试图被修改/删除的资源已经被修改了,在这种情况下会直接回复一个HTTP状态“412 (Precondition Failed)”的消息。...的请求,如果If-Match报头不为“*”,则直接抛出HTTP状态PreconditionFailed的WebFaultException异常;对于HTTP方法POST和DELETE的请求来说,如果...If-Match报头“*”或者包含指定的entityTag则验证通过,否则同样则直接抛出HTTP状态PreconditionFailed的WebFaultException异常。

809100

ASP.NET Core应用针对静态文件请求的处理: StaticFileMiddleware中间件如何处理针对文件请求

条件请求解析:获取与条件请求相关的四个报头(If-Match、If-None-Match、If-Modified-Since和If-Unmodified-Since)的,根据HTTP规范计算出最终的条件状态...如果将请求报头If-None-Match的与当前文件签名进行比较,或者将请求If-Modified-Since报头的与文件最后修改时间进行比较确定目标文件不曾改变,检验结果对应的枚举NotModified...,反之对应的枚举ShouldProcess。...如果目标文件当前的状态不满足If-Match或者If-Unmodified-Since报头表示的条件,检验结果对应的枚举PreconditionFailed,反之对应的枚举ShouldProcess...如果集合为,表示设置的区间不符合要求。 实现在SendResponseAsync方法中针对请求的处理不外乎指定响应状态码、设置响应报头和写入响应主体内。

1.4K50

HTTP首部字段完全解析

If-Match 形如 If-xxx 这种样式的请求首部字段,都可称为条件请求。服务器接 收到附带条件的请求后,只有判断指定条件真时,才会执行请求。...首部字段 If-Match,属附带条件之一,它会告知服务器匹配资源所用 的实体标记(ETag)。这时的服务器无法使用弱 ETag 。...还可以使用星号(*)指定 If-Match 的字段。针对这种情况,服务 器将会忽略 ETag 的,只要资源存在就处理请求。 10....字段 的单位秒。 若创建该响应的服务器是缓存服务器,Age 是指缓存后的响应再次 发起认证到认证完成的时间。代理创建响应时必须加上首部字段 Age。 13....几乎所有的浏览器在接收到包含首部字段 Location 的响应后,都会强 制性地尝试已提示的重定向资源的访问。 15.

1.3K20

HTTP缓存

它和 Etag 是一,它俩用来做对比; 除了头部,有些状态码与缓存也有些关系: 200 则表示成功。一个包含例如 HTML 文档,图片,或者文件的响应。...ETag 做对比,如果两个不相同,就返回资源内容和新的 Etag ,响应码200;如果相同,说明资源还没更新,就返回 304 状态码。...除了上面用于缓存的 If-Modified-Since 和 If-None-Match 两个条件请求之外,还有三个常见的条件请求: If-Match 在请求方法 GET 和 HEAD 的情况下,它的与...这样可以保证新请求的范围与之前请求的范围是同一份资源的请求,如果 ETag 与 If-Match 不一致,说明不是同一份资源,或者这个资源已经被修改。...If-Match还可以是星号*,这表示服务器会忽略 ETag 的,只要资源存在就处理请求。带有 If-Match 请求头时,服务器是无法使用弱ETag的。

78940

HTTP接口设计

403 Forbidden : 服务器拒绝执行 404 Not Found : 找不到目标资源 405 Method Not Allowed : 不允许执行目标方法,响应中应该带有 Allow 头,内容该资源有效的...HTTP 方法 406 Not Acceptable : 服务器不支持客户端请求的内容格式,响应里会包含服务端能够给出的格式的数据,并在 Content-Type 中声明格式名称 410 Gone...If-Unmodified-Since 或者 If-Match 头与服务器记录的实际修改时间或 ETag 不匹配的时候,返回状态码 412 Precondition Failed 客户端发起的请求提供的...If-Unmodified-Since 或者 If-Match 头与服务器记录的实际修改时间或 ETag 的历史匹配,资源已经被修改过的时候,返回状态码 409 Conflict 客户端发起的请求提供的条件符合实际...,那就更新资源,响应 200 OK 或者 204 No Content ,并且包含更新过的 Last-Modified 和/或 ETag 头,同时包含 Content-Location 头,其更新后的资源

1.8K20

弱网客户端的福音:节省带宽的利器【ETag】

2.REST和 ETag 来自Spring官方文档中ETag特性的描述: ETag(实体标签)是由符合HTTP/1.1的Web服务器返回的HTTP响应头,用于检查给定URL的返回是否发生变化。...3.使用 curl来验证ETag功能 一个通过客户端和服务器通信来简单地测试ETag特性的操作可以分解以下步骤: – 首先,客户端发起一个REST API的调用——响应包括了需要存储的ETag头,以便进一步使用...5.测试ETag 那就开始吧——在检索一个资源时,我们需要验证返回的响应体将包含一个“ETag”头。...更新上一步返回的资源 发送一个新的检索请求,这次使用 “If-None-Match”头携带上一步返回的ETag 在这第二次请求中,服务器将返回一个200 OK和完整的资源,这是因为此时资源已经更新请求携带的...() == 412); } 操作步骤: 首先创建资源 然后使用指定了错误ETag的“If-Match”头检索资源——这是一个有条件的GET请求 服务器将返回一个412 未满足先决条件 6.ETag的其它用武之地

1.8K20

Android开发之漫漫长途 XIX——HTTP

这时,会在字段最开始处附加 W/ ETag: W/"1234" 请求首部字段If-Match If-None-Match If-Range 形如 If-xxx 这种样式的请求首部字段,都可称为条件请求...服务器接收到附带条件的请求后,只有判断指定条件真时,才会执行请求。 If-Match ,它会告知服务器匹配资源所用的实体标记( ETag )。这时的服务器无法使用弱 ETag 。...服务器会比对 比If-Match 的字段和资源的 ETag ,仅当两者一致时,才会执行请求。反之,则返回状态码 412 Precondition Failed 的响应。...还可以使用星号( * )指定 If-Match 的字段。针对这种情况,服务器将会忽略 ETag 的,只要资源存在就处理请求。 ?...这种场景下所常用的HTTP头部字段是包含上述访问大数据(图片,视频,大文件)时的请求字段的,这些首部字段各有含义,见HTTP Headers HTTP不能做到什么(缺陷) 一条连接上只可发送一个请求。

52620

一篇文章带你详解 HTTP 协议之报文首部及字段详解(中)

如果服务器中返回的响应包含 no-cache 指令,那么缓存服务器不能对资源进行缓存。源服务器以后也将不再缓存服务器请求中提出的资源有效性进行确认,且禁止其响应资源进行缓存操作。...Host 首部字段是 HTTP/1.1 规范内唯一一个必须被包含在请求内的首部字段。 若服务器未设定主机名,那直接发送一个即可 Host: 。...5.9 If-Match 形如 If-xxx 这种样式的请求首部字段,都可称为条件请求。服务器接收到附带条件的请求后,只有判断指定条件真时,才会执行请求。...If-Match: "123456" 首部字段 If-Match,属附带条件之一,它会告知服务器匹配资源所用的实体标记(ETag)。这时的服务器无法使用弱 ETag 。...几乎所有的浏览器在接收到包含首部字段 Location 的响应后,都会强制性地尝试已提示的重定向资源的访问。

2K20

RFC2616-HTTP1.1-Header Field Definitions(头字段规定部分—译文)

当缓存的响应中出现max-age cache-control指令时,如果当前时间大于该资源的新请求时给出的时间(以秒单位),则响应就失效了。...缓存可以配置在不进行验证的情况下返回过时的响应,前提是这与缓存验证的任何“必须”级别需求(例如,“必须重新验证”cache-control指令)不冲突。   ...如果所请求的URI不包括所请求服务的Internet主机名,则必须给Host头字段一个。HTTP/1.1代理必须确保它转发的任何请求信息中都包含适当的HOST头字段,该字段标识代理请求的服务。...更新资源(例如PUT)的请求可能包含if-match头字段,以表示如果与if-match(单个实体标记)对应的实体不再是该资源的表示,则不得应用请求方法。...如果TE字段或不存在TE字段,则唯一的传输编码是“chunked”。没有传输编码的消息总是可以接受的。

1.5K30

对不起,看完这篇HTTP,真的可以吊打面试官

If-Match 标头,其中包含 Etag 以检查有效性。...此外,设置了非标准请求头 X-PINGOTHER ,这个标头不是 HTTP/1.1 的一部分,通常 Web 程序很有用。...最后,Access-Control-Max-Age 以秒单位给出一个,这个表示预检请求的响应可以缓存多长时间,在此期间内无需发送其他预检请求。...对于其他方法,特别是 PUT 方法,If-Match 可以防止丢失更新,服务器会比对 If-Match 的字段和资源的 Etag ,仅当两者一致时,才会执行请求。...但是,一旦缓存过期,客户端不会直接使用缓存的,而是发出条件请求。验证器的用作 If-Modified-Since 和If-Match标头的参数。

6.3K21

跟我一起探索 HTTP-HTTP 条件请求

它们是: If-Match如果远端资源的实体标签与在 [ETag] 这个首部中列出的相同的话,表示条件匹配成功。默认地,除非实体标签带有 'W/' 前缀,否者它将会执行强验证。...[If-Range] 与 [If-Match] 或 [If-Unmodified-Since] 相似,但是只能含有一个实体标签或者日期。...假如缓存为,或者是没有缓存的话,被请求资源会以状态码 200 OK 返回。 验证器会同资源一起返回,它们出现在首部字段中。...验证器的会用作 [If-Modified-Since]和 [If-Match] 首部字段的参数。 假如资源未发生变化,服务器就返回状态码 [304] Not Modified 的响应。...为了防止这种情况的发生,可以使用条件式请求:添加 If-None-Match 首部,并将其设置'*', 表示任意实体标签。

20331

通过一组RESTful API暴露CQRS系统功能

虽然内部领域的读取模型(read model)包含了版本号,如果将某个数值类型的版本号直接作为ETag会产生安全性问题,因为客户端可以轻易地猜出下一个数值。...另一方面,当API层条件式GET请求进行响应时,会将生成的ETag与客户端在If-None-Match头中传入的进行比较。...HTTP通过If-Unmodified-Since和If-Match提供了资源进行并发修改时的保护机制。...如你所见,ETag的仅仅是领域模型中版本号的一种表现,但我们其进行加密以满足HTTP规格的需要。服务端获取到这个之后进行解密并还原成版本号的数值。...可选的并发检查 在m-r最初的实现中,所有命令(除了CreateInventoryItemCommand,它已经隐式地包含0的版本号)都包含一个整数型的CurrentVersion字段。

69150

关于“Python”的核心知识点整理大全10

有时候,在字典中添加是为了方便,而有时候必须这样做。为此,可先使用一 的花括号定义一个字典,再分行添加各个。...在if语句中将列表名用在条件表达式中时,Python将在列表 至少包含一个元素时返回True,并在列表时返回False。...这将返回字典alien_0中与'color'相关联的: green 字典中可包含任意数量的。...在处, 我们在这个字典中新增了一个,其中的'x_position',而0。在处,我们重 复这样的操作,使用的'y_position'。...6.2.3 先创建一个字典 有时候,在字典中添加是为了方便,而有时候必须这样做。为此,可先使用一 的花括号定义一个字典,再分行添加各个

11810

你还在为 HTTP 的这些概念头疼吗?

上图用例中,首部字段 Upgrade 指定的 TLS/1.0。请注意此处两个字段首部字段的对应关系,Connection 的被指定为 Upgrade。...If-Match If-Match 后面可以跟一大堆属性,形式像 If-Match 这种的请求头称为条件请求,服务器接收到条件请求后,需要判定条件请求是否满足,只有条件请求真,才会执行条件请求 类似的还有...对于其他方法,特别是 PUT 方法,If-Match 可以防止丢失更新,服务器会比对 If-Match 的字段和资源的 ETag ,仅当两者一致时,才会执行请求。...由于当 Max-Forwards 字段 0 时,服务器就会立即返回响应,由此我们至少可以对以那台服务器终点的传输路径的通信状况有所把握。...源服务器不希望缓存服务器资源缓存时,最好在 Expires 字段内写入与首部字段 Date 相同的时间

2.3K30
领券