我认为这不是正确的行为,基于RFC 2616。
格式是绝对日期和时间,由第3.3.1节中的HTTP-date定义;它必须采用RFC 1123日期格式:
过期="过期" ":" HTTP-日期 其使用的一个例子是
到期日:1994年12月1日星期四16:00:00 GMT 注意:如果响应包含具有最大值的Cache-Control字段 年龄指令(见第14.9.3节),该指令覆盖了 到期时间。
例如:
public class ValuesController : ApiController
{
public IHttpActionResult Get()
{
return this.Redirect("http://localhost:60650/");
}
}
然后,我打电话给Fiddler:
然后,我有两个响应,第一个是重定向(HTTP 302):
发现HTTP / 1.1 302 缓存控制:无缓存
Pragma:no-cache
到期:-1
地点:localhost:60650
服务器:Microsoft-IIS / 10.0
X-AspNet-Version:4.0.30319
X-SourceFiles:=?UTF-8?B?YzpcdXNlcnNcaWdvci5jYW1wb3NcZG9jdW1lbnRzXHZpc3VhbCBzdHVkaW8gMjAxNVxQcm9qZWN0c1xSZWRpcmVjdFRlc3RcUmVkaXJlY3RUZXN0XGFwaVx2YWx1ZXM =?=
X-Powered-By:ASP.NET
日期:2016年5月9日星期一20:35:37 GMT
内容长度:0
为什么ASP.NET发送" Expires" HEADER在此重定向中的值为-1?
答案 0 :(得分:2)
从您链接的RFC第14.21节开始:
HTTP / 1.1客户端和缓存必须处理其他无效日期格式, 特别是包括价值" 0",和过去一样(即"已经 过期"。)
换句话说,请不要忘记点击此网址会导致重定向这一事实。
如果您希望将其缓存(并将永久重定向结果发送到浏览器),请使用:
public IHttpActionResult Get()
{
return this.RedirectPermanent("http://localhost:60650/");
}