所以,我有一个包含此 trainTask <- makeClassifTask(data = no_out_pso,target = "response_grade")
Clslearn = makeLearner("classif.xgboost", predict.type = "prob")
Clslearn = makeMulticlassWrapper(Clslearn, mcw.method = "onevsrest")
Clslearn = setPredictType(Clslearn, "prob")
rdesc = makeResampleDesc("CV", iters = 3)
r = resample(Clslearn, trainTask, rdesc, measures = list(mlr::acc, mlr::multiclass.au1p, mlr::multiclass.au1u))
print(r)
的图片链接:
href
这样处理(我使用laravel):
http://www.app.com/link?target=www.target.com¶m1=abc¶m2=xyz
大多数时候,这都有效。但是,最近,我们遇到了一个问题,function out (Request $request) {
$url = $request->target;
$qs = $request->except('target');
if ( !empty($qs) ) {
$url .= strpos($url, '?') !== false ? '&' : '?';
$url .= http_build_query($qs);
}
return redirect($url);
}
和param1
在看似无限的循环中附加到网址,导致我们遇到param2
错误。
问题在于它是随机发生的,我真的不知道在哪里检查,因为我在414 Request URI too long
声明之前添加了一个检查器。
return
它没有记录一次点击。即使我们的测试人员遇到了这个错误。
接收应用程序是否有可能以某种方式破坏URL? 我应该注意哪些信息?你之前见过这样的问题吗?
if ( substr_count($url, 'param1') > 1 ) {
$file = storage_path() . '/logs/logger.log';
$log = "[ " . date("d-m-Y H:i:sa") . " ] [ {$request->ip()} ] - {$url} \n";
file_put_contents($file, $log, FILE_APPEND);
}
是否可能导致此问题,并且我的检查工具无法按预期工作(但是,我测试了它并记录了我的测试网址)。
任何有关此事的帮助都会很棒。
答案 0 :(得分:0)
嗯,您可以尝试的一种尝试是在没有$request->except
和http_build_query
的情况下重写代码。
如果您没有任何特殊原因可以使用http_build_query
我建议您使用$request->input
。
$ request-&gt;输入的示例:
function out (Request $request) {
$url = $request->target;
$param1 = $request->input('param1', '');
$param2 = $request->input('param2', '');
if (!empty($param1) || !empty($param2)) {
$url .= '?';
}
if (!empty($param1) && !empty($param2)) {
$url .= 'param1=' . $param1 . '¶m2=' . $param2;
} else {
$url .= !empty($param1) 'param1=' . $param1 : '';
$url .= !empty($param2) 'param2=' . $param2 : '';
}
return redirect($url);
}
解决方案有点冗长,但有了这个,你应该确保100%不是生成冗余的代码。
我要尝试的第二件事是检查你的日志系统。例如,如果您在apache
下运行,则应该在access.log
下(或/var/log/apache2/
下使用nginx)有一个名为/var/log/nginx/
的文件。
在那里,您应该拥有所有http请求的历史记录。
也许有一些带有多个参数的有线请求可能来自一个奇怪的IP地址。 如果是这种情况,则表示某些公司出于安全原因正在监控和测试网站(可能带有奇怪的参数) 如果是这种情况,我想你是在http下,你应该切换到https。
无论如何,使用新代码,您应该确保代码并能够调查系统的任何其他部分。