在HttpServletResponse
中,setHeader()
方法的调用与我们在html <head>
代码中设置的值相同吗?
Java代码:
response.setHeader("Pragma", "no-cache");
response.setIntHeader("Expires", -1);
HTML:
<HTML><HEAD>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
</HEAD><BODY>
</BODY>
</HTML>
它们都是一样的吗?
答案 0 :(得分:5)
没有
与HTML文档中的META标记不同,HttpServletResponse方法设置的HTTP响应标头可以由网络中的任何节点(客户端和服务器之间存在的节点)进行解释和操作。通常这些是代理,它们不会对HTML文档的内容感到烦恼。这些元素可以作用于这些头的原因是HTTP响应头不仅适用于客户端(浏览器),还适用于任何中间人; HTTP规范允许中间人解释标题。
如果您希望网络中的所有元素都遵循您打算设置的缓存标头(在HTML文档中),则指定HTTP响应标头(使用HttpServletResponse对象)。所有中间人都应遵守这些标题。
只有浏览器倾向于对META标记起作用,因为它们只解析HTML文档;换句话说,META标签将确定浏览器本地缓存的文档到期设置,而不是代理缓存。
相关资源
答案 1 :(得分:1)
不,
HTTP标头是RFC 2616标头,因此当客户端从服务器获得响应时,它会首先转换这些HTTP响应标头。
HTML数据只是HTTP消息中的enity body,只有重新解释器(例如浏览器)才能翻译它。