Django is_ajax 历史回溯

Posted

技术标签:

【中文标题】Django is_ajax 历史回溯【英文标题】:Django is_ajax history back 【发布时间】:2014-01-05 13:45:55 【问题描述】:

我写了一个 Django 视图,它根据 request.is_ajax() 响应 text/htmlapplication/json。 到目前为止一切顺利,但是当我使用浏览器历史按钮时,我最终得到的是 JSON 响应而不是 HTML。

我无法找出问题所在。确实,jQuery ajax 请求在页面加载后获得了相同的 url,但这不应该出现在历史记录中,还是应该这样?

谢谢,乔

【问题讨论】:

我的直觉是浏览器缓存是实际问题。如果你回去重新加载,它会加载html版本吗?同样,如果您在返回之前直接清除浏览器缓存,它会加载 HTML 还是 JSON? 【参考方案1】:

如果根据request.is_ajax()发送不同的内容,需要发送Vary: X-Requested-With到浏览器。这样,浏览器将能够根据请求中X-Requested-With 标头的值来区分这两种响应。您可以通过以下方式做到这一点:

from django.views.decorators.vary import vary_on_headers

@vary_on_headers('X-Requested-With')
def yourview(request, ...):
    pass

【讨论】:

以上是关于Django is_ajax 历史回溯的主要内容,如果未能解决你的问题,请参考以下文章

哪个 Javascript 历史回溯实现是最好的?

第十四课时之交互式输入行编辑历史回溯

iOS 清除 UIWebView 的回溯历史

Linux监控-历史细项数据回溯

在数字输入中按backspace键时避免历史回溯

Web3 系列开发教程——创建你的第一个 NFTNFT 历史回溯