在 werkzeug-exception 上设置标头

Set Header on Werkzeug-Exception

本文关键字:设置 werkzeug-exception      更新时间:2023-09-26

我目前正在开发一个Javascript应用程序,该应用程序必须使用Werkzeug对Web服务进行跨源请求(我可以访问javascript-client和werkzeug-server)

现在,经过一些阅读/搜索,对于我在服务器上添加的响应(示例代码):

response = generate_response(request)
response.headers.add('Access-Control-Allow-Origin', 'http://localhost')

我的 JS-应用程序正在从 http://localhost/MyApp 运行。这是有效的(->服务器端的处理通过,客户端接收正确的数据),但前提是generate_response返回继承 Werkzeug BaseResponse -Class 的类的实例。

但是,这是我的问题,如果generate_response返回 Werkzeugs HttpExceptions之一,response没有要附加的标头字段。看起来,标头在 Werkzeug-Exceptions 中是固定的:

class HttpException(Exception):
    ....
    def get_headers(self, environ):
        """Get a list of headers."""
        return [('Content-Type', 'text/html')]
    ...

有没有一种简单的方法来解决这个问题,就像在变通方法中一样,这样我就可以将我的自定义标头附加到异常中,或者我是否必须对 Exception-Baseclass 进行子类化以添加对我的标头的支持?这是故意的还是值得报告的设计问题?最后但并非最不重要的一点是:我是否误解了这里的某些东西,这根本不是应该做的方式?

截至 Werkzeug 1.0.0 里程碑,此问题已修复

https://github.com/pallets/werkzeug/issues/131