gpt4 book ai didi

rust - 如何在 Iron 的 AfterMiddleware 中添加标题?

转载 作者:行者123 更新时间:2023-11-29 08:14:35 25 4
gpt4 key购买 nike

我想为我的应用做出的每个响应添加 Access-Control-Allow-Origin: *

根据 the docs , AfterMiddleware 正是为此

In the common case, a complete response is generated by the Chain's Handler and AfterMiddleware simply do post-processing of that Response, such as adding headers or logging.

所以我试着像这样使用它:

struct CorsMiddleware;

impl AfterMiddleware for CorsMiddleware {
fn after(&self, req: &mut Request, res: Response) -> IronResult<Response> {
res.headers.set(hyper::header::AccessControlAllowOrigin::Any);
Ok(res)
}
}

但我收到错误消息不能将不可变字段“res.headers”借用为可变字段。我不确定这是否是由不可变的 Response 变量类型引起的,但由于这是特征函数签名,我无法更改它。那么,我应该如何改变不可变的东西呢?如果可能的话,复制整个响应只是为了添加一个 header 会很奇怪。

最佳答案

最简单的解决方案

use mut variable

struct CorsMiddleware;

impl AfterMiddleware for CorsMiddleware {
fn after(&self, req: &mut Request, mut res: Response) -> IronResult<Response> {
res.headers.set(hyper::header::AccessControlAllowOrigin::Any);
Ok(res)
}
}

在 Rust 中,当你是数据的所有者时,你可以对它们做任何事情,所以这应该可以解决你的问题。

关于rust - 如何在 Iron 的 AfterMiddleware 中添加标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36290284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com