不遵守 Actix PayloadConfig 限制
Actix PayloadConfig limit not respected
我在 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)
}))
但是也没用
原来是我的错。有两个限制
- 服务器可以处理请求的负载限制
- http 客户端响应限制
两者都生成相同的日志,因此很难知道您达到了哪个限制。要更改 HTTP 客户端响应正文限制,应该这样做:
request.send()
.await
.map_err(Error::from)?
.body()
.limit(1024)
我在 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)
}))
但是也没用
原来是我的错。有两个限制
- 服务器可以处理请求的负载限制
- http 客户端响应限制
两者都生成相同的日志,因此很难知道您达到了哪个限制。要更改 HTTP 客户端响应正文限制,应该这样做:
request.send()
.await
.map_err(Error::from)?
.body()
.limit(1024)