【问题标题】:Actix PayloadConfig limit not respected不遵守 Actix PayloadConfig 限制
【发布时间】:2020-08-05 14:56:52
【问题描述】:

我在 Actix 中设置有效负载限制时遇到问题。无论我如何尝试配置它(使用 app_data、数据、服务级别等),我总是得到 413 http 响应,正文为 A payload reached size limit. 和以下日志:Error in response: Overflow

这是代码

    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)
            }))

但它也不起作用

【问题讨论】:

    标签: rust rust-actix actix-web


    【解决方案1】:

    原来是我的错。有两个限制

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

    两者都产生相同的日志,因此很难知道您达到了哪个限制。要更改 HTTP 客户端响应正文限制,应该这样做:

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

    【讨论】:

      猜你喜欢
      • 2023-03-24
      • 1970-01-01
      • 2021-01-08
      • 2021-02-03
      • 2022-10-18
      • 1970-01-01
      • 1970-01-01
      • 2011-10-17
      • 1970-01-01
      相关资源
      最近更新 更多