admin管理员组文章数量:1794759
FastAPI后台开发基础(9): Header的使用
Header()的使用
代码语言:python代码运行次数:0运行复制@app.get("/async")
async def async_root(user_agent: Annotated[str | None, Header()] = None):
return {"user_agent": user_agent}
使用 Model 定义 Header 参数
代码语言:python代码运行次数:0运行复制class HeaderModel(BaseModel):
name: str
host: str
port: int
format: str
encoding: List[str]
@app.get("/async")
async def async_root(h: Annotated[HeaderModel, Header()]):
"""
curl -X 'GET' \
'http://127.0.0.1:18081/async' \
-H 'accept: application/json' \
-H 'name: aaa' \
-H 'host: 192.168.0.1' \
-H 'port: 1234' \
-H 'format: json' \
-H 'encoding: utf-8,base64'
"""
return {"message": h}
Cookie 和 Header 的区别
Cookie 和 HTTP Header 都是用于在客户端和服务器之间传递信息的机制,但它们在用途、格式和工作方式上有一些重要的区别。以下是它们之间的主要区别:
1. 定义
- Cookie:
- Cookie 是由服务器发送到客户端(通常是浏览器)并存储在客户端的一小段数据。它们通常用于保持用户会话、存储用户偏好设置、跟踪用户行为等。
- HTTP Header:
- HTTP Header 是在 HTTP 请求和响应中传递的元数据。它们包含关于请求或响应的附加信息,例如内容类型、内容长度、缓存控制、认证信息等。
2. 用途
- Cookie:
- 用于存储状态信息,例如用户登录状态、购物车内容、用户偏好等。服务器可以通过设置 Cookie 来跟踪用户的会话。
- HTTP Header:
- 用于传递请求和响应的控制信息,例如:
Content-Type
: 指定请求或响应的内容类型(如application/json
)。Authorization
: 用于传递认证信息。User-Agent
: 指定发起请求的客户端软件信息。
- 用于传递请求和响应的控制信息,例如:
3. 存储位置
- Cookie:
- 存储在客户端的浏览器中。浏览器会自动管理 Cookie 的存储和发送。
- HTTP Header:
- 不会在客户端存储,而是在每次请求和响应时由客户端和服务器动态生成和发送。
4. 发送方式
- Cookie:
- 当浏览器向服务器发送请求时,会自动附加与该域名相关的 Cookie。服务器可以通过设置
Set-Cookie
响应头来发送 Cookie。
- 当浏览器向服务器发送请求时,会自动附加与该域名相关的 Cookie。服务器可以通过设置
- HTTP Header:
- 可以在请求和响应中手动设置。客户端可以在发送请求时添加自定义的 HTTP Header,服务器也可以在响应中添加自定义的 Header。
5. 生命周期
- Cookie:
- Cookie 可以设置过期时间,过期后会被浏览器自动删除。可以是会话 Cookie(在浏览器关闭时删除)或持久 Cookie(在指定的过期时间后删除)。
- HTTP Header:
- HTTP Header 在请求和响应的生命周期内有效,通常不会持久存储。
6. 安全性
- Cookie:
- Cookie 可以设置为 HttpOnly(防止 JavaScript 访问)和 Secure(仅在 HTTPS 连接中发送),以增强安全性。
- HTTP Header:
- HTTP Header 本身没有类似的安全属性,但可以通过 HTTPS 加密传输来保护敏感信息。
总结
- Cookie 是一种特定的机制,用于在客户端存储状态信息,通常用于会话管理和用户跟踪。
- HTTP Header 是一种通用的机制,用于在请求和响应中传递元数据和控制信息。 理解这两者的区别有助于更好地设计和实现 Web 应用程序的状态管理和数据传输。
本文标签: FastAPI后台开发基础(9) Header的使用
版权声明:本文标题:FastAPI后台开发基础(9): Header的使用 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1754675727a1705063.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论