繁体   English   中英

从URL获取会话的到期时间

[英]Fetching expiry of the session from URL

我正在尝试从URL获取信息,即知道会话时间何时从URL到期? 例如,如果您尝试连接到URL并从Mediafire用IDM下载文件,则可以暂停它。 自您首次与Mediafire的URL建立连接4个小时后,您正尝试重新连接并恢复下载。 不幸的是,您收到一条消息:

403:禁止 您无权访问此服务器上的file.zip。

或此消息:

可能此站点使用的临时链接不能被请求两次,也不能在会话完成后的一段时间后过期。

这意味着Mediafire给了我们最大的重新连接时间。 因此,您必须在该时间间隔内恢复下载。

我努力了:

HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.connect();
String exp = urlConnection.getHeaderField("Expires");
System.out.println("Expire date: " + exp);

输出:

Expire date: null // while responseCode is 200 OK

有时,使用不同的URL ,我会收到Tue, 03 Nov 2015 03:41:09 PST

那么,我怎么知道会话时间肯定已过期?

预先感谢。

根据RFC,并不总是有过期标头字段。

第5.3节

没有时钟的原始服务器不得生成Expires字段,除非其值表示过去的固定时间(总是过期)或者其值已由具有可靠时钟的系统或用户与资源相关联。

此外,它在4.2中定义了新鲜度

如果源服务器希望强制缓存验证每个请求,则它可以分配过去的显式到期时间以指示响应已过时。 兼容的缓存通常会先验证过时的缓存响应,然后再将其用于后续请求(请参阅第4.2.4节)。

由于原始服务器并不总是提供明确的到期时间,因此在某些情况下,还允许缓存使用启发式方法来确定到期时间(请参阅第4.2.2节)。

因此,为了获得可靠的标头字段,您可以对其进行计算

由于原始服务器并不总是提供明确的到期时间,因此在未指定明确时间的情况下,缓存可以分配启发式到期时间,采用使用其他报头字段值(例如Last-Modified time)的算法来估计可能的到期时间。 。 该规范未提供特定的算法,但对结果施加了最坏情况的约束。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM