- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个格式化 MySQL 查询的小 Rust 程序,但我发现它在更大的查询上失败,返回
Urlencoded payload size is bigger than allowed (default: 256kB)
我正在使用 actix web,它看起来像这样
use actix_web::{
web, App, HttpResponse, HttpServer, Result,
};
#[derive(Deserialize)]
pub struct MyParams {
q: String,
}
fn index(params: web::Form<MyParams>) -> Result<HttpResponse> {
Ok(HttpResponse::Ok()
.content_type("text/html; charset=utf-8")
.body("test"))
// .body(mysql_format2(¶ms.q[..])))
}
fn main() -> std::io::Result<()> {
HttpServer::new(|| {
App::new().service(
web::resource("/")
.route(web::post().to(index))
)
})
.bind("127.0.0.1:48627")?
.run()
}
调用它的 PHP 脚本看起来像
$this->FormattedMySQL = str_repeat("make a big query ", 1024*256);
$query = http_build_query([
'q' => $this->FormattedMySQL,
]);
// if I change this to 16385 (+1)
// then it breaks and returns that error
$query = substr($query, 0, 16384);
if ($this->FormatMySQL && strlen($query) <= 262144) {
try {
$this->VerbosePrint('formatting');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, MYSQL_FORMAT_ENDPOINT);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $query);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
$this->FormattedMySQL = curl_exec($ch);
curl_close($ch);
} catch (Exception $_) { }
}
我错过了什么,或者为什么这似乎是针对 16kB 而不是 256kB 抛出此错误?
我看到也可以 set the Payload
config但我不完全确定如何/在我现有的代码中应用它。
最佳答案
快速回答是有第二个配置 (FormConfig
),这就是您遇到的问题。目前还不清楚,因为它返回与 PayloadConfig
相同的错误类型(这是有原因的,我将在“更长的版本”中解释)
将您的 actix 服务器定义更改为此以将其更改为 256kb:
HttpServer::new(|| {
App::new().service(
web::resource("/")
.route(web::post()
.to(index)
)
.data(web::Form::<MyParams>::configure(|cfg| cfg.limit(256 * 1024)))
)
})
.bind("127.0.0.1:48627")?
.run()
您还需要导入 actix_web::FromRequest
,因为这是对象类型从请求更改为 urlencoded 形式的地方,也是 configure()
发生的地方方法生活。
现在,为解释!
Actix 与其他框架非常相似,具有多层限制。你找到了其中一个,这是另一个。
您找到的那个可以防止因内存耗尽而导致的拒绝服务(即有人发送一个故意较大的有效负载来攻击您的服务器,因为它必须将主体存储在某个地方以进行处理)。它管理请求的整个负载。
你要击中的那个是对每个单独字段的小得多的限制,它的存在是为了防止一种不同类型的耗尽攻击。假设您的攻击者知道您正在用某些东西解析输入;让我们假装它是 JSON。通过发送任意大且复杂的 JSON,他们可以在处理单个请求时有效地锁定您的服务器。小数据输入,非常后果。
因此,这两个限制通常相互独立,您可以根据自己的要求微调限制。很多小田?没问题。一大块?也不是问题。
FormConfig
限制的作用位于here如果您想查看代码本身。由于类型返回与 PayloadConfig
限制((此结构的 Overflow
变体)[ https://docs.rs/actix-web/1.0.7/actix_web/error/enum.UrlencodedError.html] )相同,消息不清楚,您最终结果抓挠你的头。
我认为错误“相似”的主要目的是防止服务器向潜在攻击者指示他们达到了哪个限制,并且it seems to be what they had in mind .面向用户的错误描述是问题所在,这可能会通过适当的 PR 进行调整。
关于rust - "Urlencoded payload size is bigger than allowed (default: 256kB)",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57963082/
ValueError Traceback (most recent call last) in 23 out
在 CSS 中,我从来没有真正理解为什么会发生这种情况,但每当我为某物分配 margin-top:50% 时,该元素就会被推到页面底部,几乎完全消失这一页。我假设 50% 时,该元素将位于页面的中间位
我正在尝试在 pyTorch 中训练我的第一个神经网络(我不是程序员,只是一个困惑的化学家)。 网络本身应该采用 1064 个元素向量并用 float 对它们进行评级。 到目前为止,我遇到了各种各样的
我有一个简单的问题。如何在 3 个维度上移动线性阵列?这似乎太有效了,但在 X 和 Y 轴上我遇到了索引问题。我想这样做的原因很简单。我想创建一个带有 block 缓冲区的体积地形,所以我只需要在视口
我正在尝试运行我购买的一本关于 Pytorch 强化学习的书中的代码。 代码应该按照本书工作,但对我来说,模型没有收敛,奖励仍然为负。它还会收到以下用户警告: /home/user/.local/li
我目前正在使用 this repo使用我自己的数据集执行 NLP 并了解有关 CNN 的更多信息,但我一直遇到有关形状不匹配的错误: ValueError: Target size (torch.Si
UIScrollView 以编程方式设置,请不要使用 .xib 文件发布答案。 我的 UIScrollView 位于我的模型类中,所以我希望代码能够轻松导入到另一个项目中,例如。适用于 iPad 或旋
我在我的 Ruby on Rails 应用程序(版本 4.3.1)中使用 Bootstrap gem。我最近发现了响应式字体大小功能 (rfs)。根据 Bootstrap 文档,它刚刚在 4.3 版中
这个问题不太可能帮助任何 future 的访客;它仅与一个小地理区域、一个特定时刻或一个非常狭窄的情况相关,而这些情况通常不适用于互联网的全局受众。如需帮助使这个问题更广泛地适用,visit the
size 之间的语义区别是什么?和 sizeIs ?例如, List(1,2,3).sizeIs > 1 // true List(1,2,3).size > 1 // true Luis 在 c
我想从 div 中删除一些元素属性。我的 div 是自动生成的。我想遍历每个 div 和子 div,并想删除所有 font-size (font-size: Xpx)和 size里面font tag
super ,对 Python 和一般编程 super 新手。我有一个问题应该很简单。我正在使用一本使用 Python 3.1 版的 python 初学者编程书。 我目前正在写书中的一个程序,我正在学
我无法从 NativeBase 更改缩略图的默认大小。我可以显示默认圆圈,即小圆圈和大圆圈,但我想显示比默认大小更大的圆圈。这是我的缩略图代码: Prop 大小不起作用,缩略图仍然很小。 我的 Na
我是pytorch的新手。在玩张量时,我观察到了两种类型的张量- tensor(58) tensor([57.3895]) 我打印了它们的形状,输出分别是 - torch.Size([]) torch
这是我的 docker images 命令的输出: $ docker images REPOSITORY TAG IMAGE ID CREATED
来自 PriorityQueue 的代码: private E removeAt(int i) { assert i >= 0 && i < size; modCount++;
首先,在我的系统上保留以下内容:sizeof(char) == 1 和 sizeof(char*) == 4。很简单,当我们计算下面类的总大小时: class SampleClass { char c
我正在编写一个游戏来查找 2 个图像之间的差异。我创建了 CCSprite 的子类 Spot。首先我尝试创建小图像并根据其位置添加自身,但后来我发现位置很难确定,因为很难避免 1 或 2 个像素的偏移
我有一个 Tumblr Site每个帖子的宽度由标签决定。 如果一篇文章被标记为 #width200,CSS 类 .width200 被分配。 问题是,虽然帖子的宽度不同,但它们都使用主题运算符加载相
这个问题在这里已经有了答案: What is the ideal growth rate for a dynamically allocated array? (12 个答案) 关闭 8 年前。 我
我是一名优秀的程序员,十分优秀!