Pragma和Cache-control标题之间的区别?

我读了关于维基百科上的Pragma标题:

“Pragma:no-cache header字段是一个HTTP / 1.0头,用于请求中,这是浏览器告诉服务器和任何中间caching它想要一个新的资源版本,而不是服务器告诉浏览器不要caching资源,一些用户代理在响应中确实注意到了这个头,但是HTTP / 1.1 RFC特别警告不要依赖这种行为。

但我还没有明白它的作用? 其值为no-cacheCache-Control头和值为no-cache Pragma之间有什么区别?

2 Solutions collect form web for “Pragma和Cache-control标题之间的区别?”

Pragma是HTTP / 1.0实现,而cache-control是同一个概念的HTTP / 1.1实现。 它们都是为了防止客户caching响应。 旧的客户端可能不支持HTTP / 1.1,这就是为什么这个头还在使用中。

除了Pragma仅被定义为适用于客户端的请求外,没有区别,而Cache-Control可以被客户端的请求和服务器的回复使用。

因此,就标准而言,只能从客户端请求和服务器接收客户请求的angular度进行比较。 http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.32如下定义场景:

HTTP / 1.1caching应该把“Pragma:no-cache”视为客户端发送了“Cache-Control:no-cache”。 HTTP中不会定义新的Pragma指令。

  Note: because the meaning of "Pragma: no-cache as a response header field is not actually specified, it does not provide a reliable replacement for "Cache-Control: no-cache" in a response 

我会阅读以上的方式:

  • 如果你正在写一个客户端,并且需要no-cache

    • 只需在请求中使用Pragma: no-cache ,因为您可能不知道服务器是否支持Cache-Control ;
    • 但在回复中,要决定是否caching,请检查Cache-Control
  • 如果你正在写一个服务器:

    • 在parsing来自客户端的请求时,检查Cache-Control ; 如果没有find,检查Pragma: no-cache ,然后执行Cache-Control: no-cache逻辑;
    • 在回复中,提供Cache-Control

当然,现实可能不同于RFC中所写或暗示的内容!

  • 禁用Tomcat中的所有默认HTTP错误响应内容
  • 从Web Api控制器返回http状态码
  • setcookie,不能修改标题信息 - 已经发送的标题
  • ASP.NET WebApiunit testing与Request.CreateResponse
  • HTTP状态码0 - 这对于读取或XMLHttpRequest有什么意义?
  • 如何使用Selenium WebDriver与Java获取HTTP响应代码?
  • 从angular色js的web api下载csv文件
  • 从org.apache.http.HttpResponse获取HTTP代码