rust - 未遵守 Actix PayloadConfig 限制

标签 rust actix-web

我在 Actix 中设置有效负载限制时遇到问题。无论我如何尝试配置它(使用app_data、数据、服务级别等),我总是收到 413 http 响应,其正文 有效负载达到大小限制。 和以下日志:响应错误:溢出

这是代码

    HttpServer::new(move || {
        App::new()
            .data(app_config.clone())
            .app_data(web::PayloadConfig::new(50_242_880))
            .data(Client::new())
            .wrap(middleware::Logger::default())
            .route("/{path:.*}", web::get().to(proxy))
    }).bind(server_address)
        ?.run()
        .await

代理在哪里:

pub async fn proxy(
    original_request: HttpRequest,
    body: Option<web::Bytes>,
    client: web::Data<Client>,
    app_config: web::Data<AppConfig>
) -> Result<HttpResponse, Error> {

我还尝试设置其他配置,例如

            .app_data(web::JsonConfig::default().limit(5_242_880))
            .app_data(actix_web::web::Bytes::configure(|cfg| {
                cfg.limit(5_242_880)
            }))

但是也没用

最佳答案

原来是我不好。有两个限制

  1. 服务器可以处理请求的负载限制
  2. http 客户端响应限制

两者都会生成相同的日志,因此很难知道您达到了哪个限制。要更改 HTTP 客户端响应正文限制,应该执行以下操作:

            request.send()
                .await
                .map_err(Error::from)?
                .body()
                .limit(1024)

关于rust - 未遵守 Actix PayloadConfig 限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62181857/

相关文章:

rust - 如何使用 map 返回装箱特征的向量(功能性而非命令性)

rust - 接收通过引用传递的参数的异步函数向量

asynchronous - 始终返回 Ok HttpResponse 然后在 actix-web 处理程序中工作

asynchronous - 从 Tokio 应用程序使用 Actix:混合 actix_web::main 和 tokio::main?

rust - 如何同时使用 actix-web 3 和 rusoto 0.46?

rust - 如何在 Actix-web 4.0 中使用 actix_web::client::Client

rust - 如何从向量中克隆最后一个元素?

rust - 我怎样才能在 solana 上找到程序作者?

events - 是否可以注册在创建结构之前/之后发生的事件?

rust - Actix CORS。从浏览器发送请求时出现问题