我有一个 Flask Web 应用程序,它使用 render_template 如下。我需要在响应中添加一个 Content-Security-Policy 作为附加的 http 响应标头。我尝试了以下方法,但都失败并给了我 500。
1.
from flask import \
Flask, \
render_template
app = Flask(__name__,template_folder='tmpl')
@app.route('/')
def index():
resp =make_response(render_template('index.html'))
resp.headers['Content-Security-Policy']='default-src \'self\''
return resp
if __name__ == '__main__':
app.run(host='0.0.0.0', port=3001)
2.
@app.route('/')
def index():
resp =render_template('index.html')
resp.headers.add('Content-Security-Policy','default-src \'self\'')
return resp
if __name__ == '__main__':
app.run(host='0.0.0.0', port=3001)
这里可能出了什么问题?
当我以 localhost:3001 访问 Web 应用程序时,我在终端上看到以下内容
127.0.0.1 - - [2015 年 4 月 6 日 01:45:01]“GET / HTTP/1.1”500 -
render_template
返回一个字符串,而不是响应。从视图返回的字符串会自动包装在 Flask 的响应中,这就是您可能会感到困惑的原因。使用呈现的模板构建响应。
from flask import make_response
r = make_response(render_template('index.html'))
r.headers.set('Content-Security-Policy', "default-src 'self'")
return r
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)