django 设置响应头Content-Length: 使用中间件

本文介绍了Django中的条件化GET中间件,详细解释了如何通过该中间件支持条件化GET操作,包括Last-Modified和ETag的使用。此外还提到了如何在Django设置中启用该中间件以及它如何影响HTTP响应头。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设置django 设置响应头Content-Length:

http协议中content-length 以及chunked编码分析http://blog.csdn.net/yankai0219/article/details/8269922

在djangobook中找到了如下内容

条件化的GET中间件
中间件类: django.middleware.http.ConditionalGetMiddleware .
这个中间件对条件化 GET 操作提供支持。如果response头中包括 Last-Modified 或 ETag 域,并且request头中包含 If-None-Match 或 If-Modified-Since 域,且两者一致,则该response将被response 304(Not modified)取代。对 ETag 的支持依赖于 USE_ETAGS 配置及事先在response头中设置 ETag 域。稍前所讨论的通用中间件可用于设置response中的 ETag 域。
此外,它也将删除处理 HEAD request时所生成的response中的任何内容,并在所有request的response头中设置 Date 和 Content-Length 域。

原文地址http://py3k.cn/chapter15/

在settings.py中添加此中间件,返回结果如下



### 配置 Django-CORS-Headers 4.7.0 的方法 #### 安装依赖 要使用 `django-cors-headers`,首先需要通过 `pip` 进行安装。以下是安装命令: ```bash pip install django-cors-headers==4.7.0 ``` 此操作会将指定版本的库安装到当前环境中[^1]。 #### 修改项目的设置文件 (`settings.py`) 为了使 `django-cors-headers` 正常工作,需将其添加至项目中的应用列表并配置中间件: 1. **在 `INSTALLED_APPS` 中注册应用** 将 `'corsheaders'` 添加到 `INSTALLED_APPS` 列表中: ```python INSTALLED_APPS = [ ... 'corsheaders', ... ] ``` 2. **配置中间件** 在 `MIDDLEWARE` 列表中插入 `'corsheaders.middleware.CorsMiddleware'` 并确保其位于 `'django.middleware.common.CommonMiddleware'` 前面: ```python MIDDLEWARE = [ 'corsheaders.middleware.CorsMiddleware', # 插入此处 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', ... ] ``` #### 配置 CORS 参数 可以通过修改 `settings.py` 文件来定义允许跨域访问的具体规则。以下是一些常用的参数及其含义: 1. **全局允许所有域名** 如果希望任何网站都能访问 API,则可以启用如下选项: ```python CORS_ALLOW_ALL_ORIGINS = True # 允许来自任意源的请求 ``` 2. **仅允许特定域名** 若要限制只允许某些特定站点访问资源,可使用以下方式替代上述配置: ```python CORS_ALLOWED_ORIGINS = [ "https://example.com", "http://localhost:8080" ] ``` 3. **支持的方法与头信息** 可以进一步细化哪些 HTTP 方法以及自定义头部字段被接受: ```python CORS_ALLOW_METHODS = [ "DELETE", "GET", "OPTIONS", "PATCH", "POST", "PUT", ] CORS_ALLOW_HEADERS = [ "accept", "authorization", "content-type", "user-agent", "x-custom-header", # 自定义头部字段 ] ``` 4. **暴露额外响应头给客户端** 若有特殊需求让浏览器能够读取服务器返回的一些非标准头部数据,可通过下面的方式实现: ```python CORS_EXPOSE_HEADERS = ["Content-Length", "X-My-Custom-Header"] ``` 以上步骤完成后重启服务即可生效。 #### URL 路由示例 如果涉及到具体的视图函数调用路径设定,在 urls.py 文件里按照既定模式编写路由也是必要的部分之一。例如创建一个简单的写入接口可能看起来像这样[^2]: ```python from django.conf.urls import url from . import accessdata urlpatterns = [ url('write/', accessdata.write_stock_list), ] ``` #### 备份 Python 环境 最后提醒一下,在完成开发调试之后记得保存好当前使用的包清单以便后续迁移或者部署时重现相同的环境状态[^4]: ```bash pip freeze > requirements_2024_10_02.txt ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值