從外部源加載圖像時,是否可以使用JavaScript來動態更改收到的HTTP頭信息?我試圖控制圖像的緩存(Expires
,Max-Age
等)客戶端,因爲我沒有訪問服務器。使用JavaScript修改HTTP頭客戶端
回答
我不認爲Javascript實際上可以做到這一點:圖像被瀏覽器請求,並由他來定義HTTP頭問題。
使用某些自定義標題的一種方法是使用某種Ajax請求,但不傳遞任何<img>
標記;但你必須知道如何處理返回的數據......不要認爲這會有很大幫助。
如果你想通過瀏覽器保存在緩存您的圖片,您服務器發送的響應中的右頭(如Etag,和/或到期 - 見mod_expires,爲Apache,例如)
如果您想絕對確定瀏覽器將下載新圖片,而不是使用它在緩存中的版本,則應每次使用不同的URL。
這通常使用時間戳作爲URL的參數來完成;比如example.com/image.jpg?123456789 (123456789或多或少是當前的時間戳 - 顯然少於更多,但你會明白:每秒瀏覽器將看到URL已更改)
編輯:
由服務器生成的Expires
頭部,並且是進來的響應報頭中的一個(它不是一個報頭中的客戶端的請求發送;參見List of HTTP headers )。
所以,你是絕對有來自客戶端沒有對其進行控制:這是必須配置做工作,這裏的服務器...
如果你想要更多的答案:你是什麼試圖做到完全?爲什麼?
想要設置從外部源到客戶端使用客戶端技術而不是服務器(tomcat,apache)通過ajax的圖像/閃存獲取的更長過期max-age – cometta 2009-08-06 06:07:32
緩存指令在服務器的責任。你不能在客戶端操縱它們。
也許您可以選擇安裝代理服務器,例如如果你瞄準公司員工?
正如其他人所說的,不,它不可能在客戶端代碼中操作來自服務器的http頭和緩存指令。
什麼是可能的
你做什麼必須做的能力是確保你得到一個新的文件。這可以通過將唯一字符串附加到請求的URL作爲查詢字符串參數來完成。
例如如果你想確保你得到了每一個小時
<script type="text/javascript">
var d = new Date();
url += ("?" +d.getYear() + "_" + d.getDay() + "_" + d.getHours());
</script>
這樣做是添加包含年,日,時的URL的值一個新的文件,所以這將是每個小時獨特的,從而確保新文件請求。 (未測試!)
很明顯,這可以做得更加通用,也可以進行微調,但希望你能明白。
什麼是不可能的
什麼,你不能做的是確保你不會從服務器檢索新版本。
另一個注意事項:如果您不想緩存,可以使用'd。 getTime();'爲時間戳,它會附加一個數字,比如'1249547501178' – Kobi 2009-08-06 08:32:42
- 1. 使用Http客戶端
- 2. 在客戶端使用javascript修改本地Appcache?
- 3. 無法修改SOAP WebService客戶端中的http accept頭 - JAX-WS 2.2.10 - JDK1.7
- 4. 客戶端通常發送http頭
- 5. 客戶端請求的ReastEasy Http標頭
- 6. PHP SOAP客戶端http頭錯誤
- 7. 錯誤提取HTTP頭SOAP客戶端
- 8. Akka Http客戶端:自定義標頭
- 9. 用頭在客戶端(通過JavaScript)
- 10. gtm-http-fetcher修改HTTP頭
- 11. 澤西REST客戶端與Apache HTTP客戶端4.5與改造
- 12. 使用HTTP客戶端的Java 4.5客戶端獲取語句
- 13. 使用Apache HTTP客戶端進行客戶端負載均衡
- 14. 如何使用HTTP客戶端傳遞客戶端證書?
- 15. 修改客戶端站點上的服務器http響應
- 16. 修改SOAP頭WCF客戶端中的Mustunderstand屬性
- 17. 使用Spring-WS客戶端動態設置自定義HTTP頭
- 18. 如何使用HTTP響應頭向客戶端發送CSS?
- 19. 使用Http標頭解除與噴客戶端的響應
- 20. 使用的Mockito用於HTTP客戶端
- 21. 在HTTP客戶端
- 22. apache http客戶端
- 23. 執行javascript的http客戶端...?
- 24. Javascript修剪圖像客戶端
- 25. 修改客戶端上的ModelState
- 26. 選擇元素客戶端修改?
- 27. 客戶端修改後的HTML/CSS/JS
- 28. 如何使用HTTP客戶端
- 29. 在akka-http客戶端中使用PlayJson
- 30. 使用HTTP客戶端的Kerberos連接
這與編程無關? (聽起來很奇怪,通常是相反的......) – Kobi 2009-08-06 04:53:24
** @ Kobi:**我修改了這個問題(爲了清晰起見)。 – 2009-08-06 04:57:28