django - 如何在 django REST 中禁用 IE11 缓存

标签 django django-rest-framework

我的 Angular 5 应用程序遇到一些 Internet Explorer 问题,因为在 IE 11 我对 django-REST 后端的 get 请求由浏览器缓存。 我找到了question建议向响应中添加特殊的缓存控制 header ,但我没有找到如何使用 Django REST 执行此操作的有效答案。我测试过的所有其他浏览器似乎都可以正常工作。

最佳答案

也许您可以使用中间件类将 Cache-Control header 添加到所有响应。

class CacheControlMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        response = self.get_response(request)
        response['Cache-Control'] = 'no-cache'
        return response

然后将其连接到您的settings.py

MIDDLEWARE = [
    ...

    'your.app.CacheControlMiddleware',

    ...
]

请记住,这将适用于您可能想要也可能不想要的所有 View (所有 ModelViewSet)。

如果您只想将其应用于特定 View 集,则最好在您的 View 集中重写 retrieve()list() 方法可以在Response上设置Cache-Control header 。有关详细信息,请参阅 http://www.django-rest-framework.org/api-guide/generic-views/#mixins

关于django - 如何在 django REST 中禁用 IE11 缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49220992/

相关文章:

django - 如何在 Graphite 烯中格式化日期和日期时间

python - Django Rest 通过 id 更新多对多

python - Django rest framework permission_classes of ViewSet 方法

django - 无效的 pk(模型对象)不存在 - Django REST Framework

python - djangorest框架——如果身份验证失败,则使用下一个参数重定向到登录

python - 模型以字典形式查看,然后将其呈现为 html 表

python - 使用标准 django.contrib.auth.models.User 模型在 Sqlite 数据库中查询用户名 "x"的用户

django - 以django-crispy形式内联两个字段,但没有其他水平字段?

Django REST 身份验证 : error rendering django-allauth template after email confirmation

python - 如何使用 Django-oauth-toolkit 进行身份验证,使用 Django-rest-framework 测试 API 端点