簡體   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