我正在開發一個應用程序,它應該爲請求的「普通」瀏覽器請求和AJAX請求提供不同的內容。 (實際上,如果請求是AJAX,則將響應HTML封裝在JSON對象中)。根據http accept頭來提供內容 - 緩存問題?
爲此,我檢測在服務器側的AJAX請求,並適當地處理響應,請參閱下面的僞代碼:
function process_response(request, response)
{
if request.is_ajax
{
response.headers['Content-Type'] = 'application/json';
response.headers['Cache-Control'] = 'no-cache';
response.content = JSON(some_data...)
}
}
的問題是,當第一AJAX請求到當前瀏覽的網址是Google Chrome上發生的奇怪事情 - 如果在響應到來並通過JavaScript處理後,用戶單擊某個鏈接(靜態,重定向到其他頁面),然後單擊瀏覽器中的後退按鈕,他會看到返回JSON代碼而不是呈現的網站(記錄服務器我可以說無要求)。在我看來,Chrome存儲最新的請求響應爲特定的URL,並沒有考慮到它有不同的內容類型等。
是我在濫用HTTP協議的Chrome或錯誤?
---更新12 11 2012,12:38 UTC
以下PatrikAkerstrand答案,我發現以下Chrome有錯誤:http://code.google.com/p/chromium/issues/detail?id=94369
任何想法如何避免此行爲?
嗯,它沒有解決問題。但是,按照你的迴應,我發現它是一個谷歌瀏覽器的bug。現在,有什麼想法如何避免這種行爲? * http://code.google.com/p/chromium/issues/detail?id=94369 – migajek