Python Flask 框架设置响应头,一篇文章学明白
创始人
2024-05-17 04:09:52
0

flask 响应头设置

    • 📖 导读
    • 📖 Python Flask 设置响应头
      • 🎉 response.headers 属性
      • 🎉 flask.abort() 函数返回特定状态码
    • 📖 Flask 中可设置的响应头参数
    • 📖 其他关于响应头的配置
      • 🎁 使用中间件
      • 🎁 使用装饰器
      • 🎁 使用配置
      • 🎁 使用第三方扩展

📖 导读

本篇博客我们将全面了解 Flask 中关于请求的相关设置,开始前你需要先配置 Flask 的基础框架。

from flask import Flask, make_responseapp = Flask(__name__)@app.route('/')
def index():response = make_response("Hello, 梦想橡皮擦")response.headers['Content-Type'] = 'text/html; charset=utf-8'return responseif __name__ == '__main__':app.run()

运行代码,得到下述效果。

Python Flask 框架设置响应头,一篇文章学明白

📖 Python Flask 设置响应头

🎉 response.headers 属性

response.headers 是 Flask 框架中的一个属性,它是一个字典类型,用于存储响应头信息。这个属性可以在视图函数中直接使用,用于设置响应头的信息。

比如在视图函数中,可以使用下面的代码来设置 Content-Type 响应头:

response.headers['Content-Type'] = 'text/plain'

如果你想要设置其它响应头,可以使用同样的方式,例如:

response.headers['X-My-Header'] = 'Xiang_Pi_Ca'

通过开发者工具,可以查看到自定义的响应头内容。

Python Flask 框架设置响应头,一篇文章学明白

注意,在设置响应头之前,你需要创建一个响应对象。可以使用 flask.make_response() 函数来创建一个响应对象,例如:

from flask import make_responseresponse = make_response("Hello, Xiang_Pi_Ca!")
response.headers['Content-Type'] = 'text/plain'

🎉 flask.abort() 函数返回特定状态码

使用 flask.abort() 函数来返回特定状态码的响应,并设置响应头。例如,在请求中包含无效参数时返回 400 Bad Request:

from flask import Flask, abortapp = Flask(__name__)@app.route('/')
def index():# 模拟参数错误invalid_parameter = Trueif invalid_parameter:abort(400)return "Hello, Xiang_Pi_Ca!"if __name__ == '__main__':app.run()

代码运行效果:

Python Flask 框架设置响应头,一篇文章学明白

📖 Flask 中可设置的响应头参数

在 Flask 中,你可以设置任何 HTTP 协议定义的响应头参数。

  • 常用的响应头包括:
    • Content-Type:用于指定响应体的 MIME 类型。例如,'Content-Type': 'text/html' 表示响应体是 HTML 文档。
    • Content-Length: 用于指定响应体的长度。
    • Location:用于重定向。例如,'Location': 'https://pachong.vip' 会导致浏览器重定向到 https://pachong.vip
    • Cache-Control: 用于控制缓存,例如,'Cache-Control': 'no-cache' 表示浏览器不应缓存响应。
    • Expires: 用于指定缓存过期时间。
    • Etag:用于指定资源的 ETag 值。
    • Server: 用于指定服务器的名称和版本。
    • Access-Control-Allow-Origin: 用于控制跨域资源共享。

📖 其他关于响应头的配置

除了在视图函数中设置响应头之外,Flask 还提供了其他方式来配置响应头。

🎁 使用中间件

中间件可以在请求和响应之间添加额外的处理。你可以使用中间件来设置响应头。

中间件是一种在请求和响应之间添加额外处理的机制,可以使用中间件来设置响应头。

下面的代码实现了一个中间件,在每个请求之前设置 Content-TypeX-My-Ca 响应头。

from flask import Flask, request,make_responseapp = Flask(__name__)@app.before_request
def before_request():response = make_response()response.headers['Content-Type'] = 'application/json'response.headers['X-My-Ca'] = 'xiangpica_demo'return response@app.route('/')
def index():return "Hello, 梦想橡皮擦!"

🎁 使用装饰器

装饰器是一种在不改变视图函数本身的情况下添加额外处理的方法。

下面的代码实现了一个装饰器,在每个视图函数执行之前设置 Content-TypeX-My-Ca 响应头。

from flask import Flask, request, make_response
from functools import wrapsapp = Flask(__name__)def set_headers(f):@wraps(f)def decorated_function(*args, **kwargs):response = make_response(f(*args, **kwargs))response.headers['Content-Type'] = 'application/json'response.headers['X-My-Header'] = 'xiangpica_demo_'return responsereturn decorated_function@app.route('/')
@set_headers
def index():return "Hello, 梦想橡皮擦!"if __name__ == '__main__':app.run()

上述代码可以实现每当路由被调用时,装饰器都会在视图函数之前设置 Content-TypeX-My-Ca 响应头。

🎁 使用配置

应用程序配置是一种在不修改应用程序代码的情况下更改应用程序行为的方法。

from flask import Flask,  make_responseapp = Flask(__name__)
app.config.update(RESPONSE_HEADERS={'Content-Type': 'application/json','X-My-Ca': 'xiangpica_demo_'}
)@app.route('/')
def index():response = make_response()for key, value in app.config['RESPONSE_HEADERS'].items():response.headers[key] = valuereturn responseif __name__ == '__main__':app.run()

上述代码在配置中定义了 'Content-Type''X-My-Ca' 两个响应头,在路由函数中就可以使用 make_response() 函数来创建响应对象,然后遍历配置中的响应头来添加响应头了,该写法的优点是,我们可以在不修改应用程序代码的情况下更改响应头, 也可以根据环境来设置不同的响应头。

🎁 使用第三方扩展

Flask 有许多第三方扩展可以帮助你更简单的配置响应头, 比如 Flask-Cors,Flask-Security 等,这些内容以后用单独的博客进行说明。

📢📢📢📢📢📢
💗 你正在阅读 【梦想橡皮擦】 的博客
👍 阅读完毕,可以点点小手赞一下
🌻 发现错误,直接评论区中指正吧
📆 橡皮擦的第 843 篇原创博客

从订购之日起,案例 5 年内保证更新

  • ⭐️ Python 爬虫 120,点击订购 ⭐️
  • ⭐️ 爬虫 100 例教程,点击订购 ⭐️

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...